当前MySQL 数据库是一主库一从库,在业务量访问不断增大的情况下,再增加一台从库。
不停机也就是不重启MySQL服务情况,可以通过mysqldump备份主库,恢复到从库。 为了避免出现其他情况,选择在网站访问量低峰期时间段操作。
mysqldump是逻辑备份,数据量大时,备份速度会很慢,锁表的时间也会很长,如果可以停机维护,最好是停机之后再操作
当前环境
主库IP:192.168.0.88
从库IP:192.168.0.89
从库IP:192.168.0.100 【新增】
1、从库配置环境
在 一主一从的基础上新增从库,不清楚的看上一篇文章
查找数据库配置文件一般为 my.cnf 位置在 /etc/my.cnf
# vim /etc/my.cnf
/etc/my.cnf 内容
server-id = 3 #这个设置3(上一个从库为2,当前从库自增1) log-bin = mysql-bin #开启binlog日志 slave-skip-errors = all #跳过主从复制出现的错误
2、备份主库
mysqldump -uroot -p123456 --routines --single_transaction --master-data=2 --databases xiadmin> xiadmin.sql
参数说明:
--routines:导出存储过程和函数
--single_transaction:导出开始时设置事务隔离状态,并使用一致性快照开始事务,
然后unlock tables;而lock-tables是锁住一张表不能写操作,直到dump完毕。
--master-data:默认等于1,将dump起始(change master to)binlog点和pos值写到结果中,
等于2是将change master to写到结果中并注释。
3、从库创建数据库,并导入数据
先将 mysqldump 导出的数据拷贝到从库,如 /tmp/xiadmin.sql
然后新建一个同名库,因为导出的数据是不包含建库语句的,注意建库的字符集需要与原数据库一致
mysql> create database xiadmin; mysql> source /tmp/xiadmin.sql
4、在备份文件 /tmp/xiadmin.sql 查看binlog和pos值
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=8213;
可以看到 MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=8213;
5. 从库设置从这个日志点同步
change master to master_host='192.168.0.88', master_user='repl', master_password='123456', master_log_file='mysql-bin.000003', master_log_pos=8213;
启动并查看状态
mysql> start slave; mysql> show slave status\G
成功的重要参考是上图两个 YES,说明主从配置成功。
参考文章:https://developer.aliyun.com/article/38826