前言
之前有写过mysql主从复制,使用那个方法必须在一开始使用,那可不可以在线上数据库不停机的情况下增加从库呢?今天就来说说怎么在线上不停机的情况下增加从库。
配置
参考前文mysql配置修改和创建同步账号
接下来是重点
在前文中备份数据库的时候我们使用以下命令进行备份1
mysqldump -u数据库账号 -p数据库密码 数据库名 --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 > 导出的sql文件名字.sql
其中参数意义如下:
–skip-lock-tables 不锁表
–single-transaction 设置事务的隔离级别为REPEATABLE READ,保证数据一致性 仅对InnoDB表有效 该参数与–lock-tables互斥
–flush-logs 刷新日志
–hex-blob 使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用该选项。影响到的字段类型有BINARY、VARBINARY、BLOB
–master-data 该选项将binlog的位置和文件名追加到输出文件中。如果为1,将会输出CHANGE MASTER 命令;如果为2,输出的CHANGE MASTER命令前添加注释信息
然后把导出的sql文件拿到从库还原。
还原后使用命令查看master_log_file和master_log_pos1
head 导出的sql文件名字.sql -n80 | grep "MASTER_LOG_POS"
最后执行同步命令开启同步即可
总结
跟上一篇没多大差别,就是数据库备份采用命令备份,查看主库状态变成查看备份的数据库文件状态,其他一样。