优雅地给正在运行的MySQL添加从库
前言
之前写过一篇 MySQL主从同步配置 给 MySQL 配置从库,在主库在使用的情况下,需要将主库进行禁止写入操作,然后再导出导入,如果库比较大的话, 会对业务造成一定的影响。这篇文章主要介绍如何不停机进行添加从库。
主库操作
开启 binlog
1 | [mysqld] |
这里注意 server-id
主从不能一样, 配置完成重启 mysql
创建用于同步的用户账号
登陆数据库
1 | mysql -hlocalhost -uroot -ppassword |
创建用户并授权
1 | CREATE USER 'repl'@'%' IDENTIFIED BY '123456'; |
授权
1 | GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; |
导出数据库 sql
1 | mysqldump -uroot -ppassword -hlocalhost -P3306 --master-data=2 --single-transaction --skip-tz-utc --all-databases > /tmp/db.sql |
–master-data 默认值为 1,会将
CHANGE MASTER TO
语句写入到 sql 文件中,如果将 master-data 设置为 2,则会以注释写入到 sql 文件中。
–single-transaction 在 dump 过程中保证数据的一致性,这个选项对 InnoDB 的数据表很有用,且不会锁表。但是这个不能保证 MyISAM 表和 MEMORY 表的数据一致性。
从库操作
导入数据库 sql
1 | mysql -uroot -ppassword -hlocalhost -P3306 < /tmp/db.sql |
配置从库
1 | CHANGE MASTER TO |
启动从库
1 | start slave; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杂烩饭!
评论