1、主mysql配置信息
配置文件路径:/etc/mysql/mysql.conf.d/mysqld.cnf
log_bin=‘mysql-bin’ # 必须设置、启动二进制日志
server-id=12 # 必须设置、保证每个服务器设置id不相同
binlog-do-db=osyunweidb # 需要同步的数据库名称、可以写多行表示同步多个数据库
binlog-ignore-db=mysql # 需要忽略的数据库、不进行同步
2、从mysql配置信息
配置文件路径:/etc/mysql/mysql.conf.d/mysqld.cnf
# bind-address= 127.0.0.1 # 允许外网链接
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION #datetime类型可以设置为0
group_concat_max_len = 102400 # 拼接字符串长度
log_bin=‘mysql-bin2’ # 必须设置、启动二进制日志
server-id=11 # 必须设置、保证每个服务器设置id不相同
replicate-do-db # 指定需要复制的数据库。
replicate-ignore-db # 复制时需要排除的数据库
3、设置外网主机以root身份登陆、重启主从mysql服务
1、登陆自己机器的MySQL数据库:mysql -uroot -p密码
设置root用户可以任意IP访问,代码如下(可选,这里%代表任意,也可以指定IP):
update user set host = '%' where user = 'root';
2、GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
予任何主机访问数据的权限 这里youpassword 换成你的数据库登录密码
3、MySQL>FLUSH PRIVILEGES;
修改生效,这样就可以在其它任何的主机上以root身份登录啦!
$sudo service mysql restart
4、进入主服务器sql中 执行下面命令
show master status\G
image.png
第一行,当前正在记录的 binarylog文件名;
第二行,表示当前的文件偏移量,写入在上面文件的记录位置;
第三行,表示需要记录的数据库;
第四行,表示需要忽略的数据库;
只有需要记录的数据库,其变化才会被写入到日志文件中。
5、数据同步
1、备份前先把数据库加上锁,以保证备份时不会写入新数据导致数据不一致
flush tables with read lock;
2、在备份服务器中新建数据库名称与主数据库相同、主服务器中执行下述命令:
mysqldump --default-character-set=utf8mb4 --host=127.0.0.1 -ualgo_wb -palgo_wb --opt algo_wyh | mysql --host=192.168.0.106 -ualgo_wb -palgo_wb --default-character-set=utf8mb4 -C algo_wyh
3、从mysql输入下述命令:
CHANGE MASTER TO
MASTER_HOST='主mysql服务器的IP地址',
MASTER_USER='主mysql用户名',
MASTER_PASSWORD='主mysql密码',
MASTER_LOG_FILE='mysql-bin.000004', 对应主mysql中file内容
MASTER_LOG_POS=7145;对应主mysql中position内容
6、启动服务器slave
1、启动slave
start slave;
2、停止slave
stop slave;
7、查看slave状态
show slave status\G
image.png
Master_host 指的是 主服务器的地址
Master_user 指的是主sql服务器上用来复制的用户,从服务器会用此账号来登录主服务进行复制
Master_log_file 主sql服务日志文件名
Read_Master_log_pos 主sql日志记录位置(多少行开始), 从服务器根据日志文件名与这个记录位置选择复制的文件和位置
Slave_IO_Running: 指的就是从服务器上负责读取主服务器的线程工作状态。 从服务器用这个专门的线程链接到主服务器上,并把日志拷贝回来。
Slave_SQL_Running: 指的就是专门执行sql的线程。 它负责把复制回来的Relaylog执行到自己的数据库中。 这两个参数必须都为Yes 才表明复制在正常工作。
8、取消 lock锁限制
unlock tables;
网友评论