mysql主从模式下不停机情况下,添加从机器

配置从数据库
vim /etc/my.cnf
//添加或修改以下信息:
server-id=3 //设置从库的唯一标识符 从的必须比主小
保存退出

重启mysql服务
service mysql restart

备份主数据库:(主库操作)
mysqldump --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 -uroot -p --all-databases > /opt/all_2020-06-04.sql
参数说明:
--skip-lock-tables: 不锁表
--single-transaction: 导出在一个事务下进行,只在innodb下起作用
--flush-logs:日志只刷新一次
--hex-blob:BINARY, VARBINARY, BLOB, BIT类型导出为十六进制。
--master-data=2:把binlog的位置和文件名添加到输出中,如果等于1,将会打印成一个CHANGE MASTER命令;如果等于2,会加上注释前缀。
传输到从:(主库操作)
scp /opt/all-2020-06-04.sql root@192.168.0.41:/opt/

查看binlog文件名和位置::(从库操作)
head /opt/all_2020-06-04.sql -n80 |grep 'MASTER_LOG*'
会显示以下信息:
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000040', MASTER_LOG_POS=154;
其中mysql-bin.000040 和154为需要的信息。

从导入所有数据:(从库操作)
mysql -uroot -p < /opt/all-2020-06-04.sql

配置并启动主从复制
MySQL> change master to
master_host='192.168.0.40',
master_user='repl',
master_password='123456',
master_log_file='mysql-bin.000040',
master_log_pos=154;

查看从状态:(从库操作)
MySQL> show slave status\G;
如果
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
两个yes表示设置成功,并检测 数据是不是一致