动态增加MySQL服务从库的两种方式(mysqldump/xtrabackup)
AndyYang|
阅读:823
发表时间: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,说明主从配置成功。
已有0条评论