https://www.cnblogs.com/linuxk/p/9372990.html
https://www.cnblogs.com/kcxg/p/11130697.html
https://www.cnblogs.com/zping/p/5588536.html
首先配置mater:
配置 my.cnf文件:
server-id = 1
log_bin=/opt/mysql/data/mysql-bin #路径自己确认
#mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。对应的,binlog的格式也有三种:STATEMENT,ROW,MIXED。
binlog_format = MIXED #以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。(可不配置)
sync_binlog = 1 #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全
expire_logs_days =7 #二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
主库不加binlog_do_db配置从库会同步主库所有库
binlog_do_db=数据库名称,多个用逗号隔开
创建用于主从同步的账户:
GRANT REPLICATION SLAVE ON *.* to 'test'@'192.168.31.234' identified by '123456';
FLUSH PRIVILEGES;
配置从库slave:
server-id = 1
log_bin=/opt/mysql/data/mysql-bin #路径自己确认
read-only=1
log_slave_updates = 1 #不添加log-slave-updates参数,从库从主库复制的数据不会写入log-bin日志文件里。
数据同步:
1、锁表方式(mysqldump)
https://www.cnblogs.com/kcxg/p/11130697.html
#对主库上所有表加锁,停止修改,即在从库复制的过程中主库不能执行UPDATA,DELETE,INSERT语句!
FLUSH TABLES WITH READ LOCK;
#获取主库的日志信息,file表示当前日志文件名称,position表示当前日志的位置
SHOW MASTER STATUS;
#另开一个终端生成镜像,在生成完成之前不要释放锁。
mysqldump --all-databases --master-data -u root -p密码 -P 3306 > all.sql
单一数据库表备份
mysqldump -u root -p123456 --opt -R openser(表) > openser20121203.sql
#主库数据生成镜像完毕后,我们需要把主库的锁释放掉,需要注意的是,在上锁这一段期间,我们无法对数据库进行写操作,比如UPDATA,DELETE,INSERT。
UNLOCK TABLES;
然后把备份文件复制到从机 生成数据;
mysql -u root -p123456 openser < openser20121127.sql
2、不锁表方式(xtrabackup) 生成文件100多个g,大概3个小时 然从机导入大概30分钟
https://www.cnblogs.com/linuxk/p/9372990.html
2.1首先安装xtrabackup
直接rpm -Uvh *.rpm
2.2 全量备份
innobackupex --user=root --password=密码 --defaults-file=/etc/my.cnf /备份路径
2.3 把备份的文件上传到从服务器上去 并停掉MySQL服务
2.4 把从服务器上的mysql- data文件中的文件全部删除
然后执行:(默认占用内存100M可以通过--user-memory设置)
innobackupex --apply-log --user-memory=1G 文件
innobackupex --copy-back 文件
2.5 修改权限
chown -R mysql:mysql /opt/mysql/data (mysqldata路径)
2.6 重启mysql
systemctl start mysql
或者 service mysqld start
数据同步后 启动mysql主从:
首先停掉slave:stop slave 然后 同步 change 。。。 启动slave 查看slave状态 记住mysql- bin.000位置