动态增加MySQL服务从库的两种方式(mysqldump/xtrabackup)

AndyYang| 阅读:760 发表时间:2020-05-07 22:02:42 mysql
摘要:实际业务中,一主一从,但很可能需要加多从数据库。如何添加呢: 1、利用mysqldump备份; 2、利用xtrabackup 备份。
实际业务中,一主一从,但很可能需要加多从数据库。如何添加呢:
1、利用mysqldump备份;
2、利用xtrabackup 备份。

一、mysqldump:
MySQL主从是基于binlog日志,binlog日志除了用于主从,还可以用binlog恢复数据库等。

命令
mysqldump -uwebyang.net -pwebyang.net --routines --single-transaction --master-data=2 --databases blog > blog.sql
--routines:导出存储过程和函数(没有可以去除)
--single_transaction:导出开始时设置事务隔离状态,并使用一致性快照开始事务,然后unlock tables;而lock-tables是锁住一张表不能写操作,直到dump完毕。
--master-data:默认等于1,将dump起始(change master to)binlog点和pos值写到结果中,等于2是将change master to写到结果中并注释。

然后scp将sql语句传递到新数据库上,导入即可,在sql的顶部有当前的binlog文件以及position。

二、xtrabackup:
innobackupex --user=webyang.net --password=webyang.net ./
这样备份的是整个数据库文件夹,传到备库上,需要覆盖备库的data目录。

从备份目录中的xtrabackup_info文件获取到binlog和position位置。

剩下的就是新从库的操作,复制之前就从库的配置:

[mysqld]
symbolic-links=0
datadir=/data
slow_launch_time=5
server-id   = 3
log-bin=mysql-bin
max_allowed_packet = 20971520
socket      = /tmp/mysql.sock
innodb_flush_log_at_trx_commit=2
innodb_lock_wait_timeout=500
max_connections=1000

大概就这么些(动态调整)。

主库需要添加新从库同步的用户(如果和之前从库信息一模一样,可以忽略此步骤):
参考新从库创建用户、分配复制权限和刷新。

新从库添加同步用户:
CREATE USER 'webyang'@'127.0.0.1' IDENTIFIED BY 'webyang.net';
分配复制权限:
GRANT REPLICATION SLAVE ON *.* TO 'webyang'@'127.0.0.1';
刷新(使其生效):
flush privileges;

查看是否分配成功:
show grants for webyang@'127.0.0.1';

如果出错删除用户:
drop user webyang@'127.0.0.1';

最后新从库设置(自行修改配置):
change master to master_host='127.0.0.1', master_user='webyang',master_password='webyang.net',master_log_file='mysql-bin.00011',master_log_pos=441;

启动并查看:
start slave;
show slave status\G;

可以看到IO和SQL线程均为YES,说明主从配置成功。
本文为AndyYang原创,转载请注明出处!
如果您觉得好,可以打赏作者:
如果您觉得累了,是否想看点美女养养眼:猛戳>>朋友帮
如果您觉得皮了,是否想来点神吐槽:猛戳>>iPhone查询中

已有0条评论

昵称:
邮箱:

  • 最新评论

iPhone查询中 - bbs.ipcxz.com 朋友帮 - www.pengyb.cn iPhone查询中 - bbs.ipcxz.com
反馈
微信订阅号