实际业务中,一主一从,但很可能需要加多从数据库。如何添加呢:
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,说明主从配置成功。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/98874.html