栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

linux mysql主从同步

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

linux mysql主从同步

主从同步

原理:

(1)MySQL将数据变化记录到二进制日志中;

(2)Slave将MySQL的二进制日志拷贝到Slave的中继日志中;

(3)Slave将中继日志中的事件在做一次,将数据变化,反应到自身(Slave)的数据库

环境准备:两台机器

主库:ip 192.168.211.129 port 3306

从库:ip 192.168.211.131 port 3306

主库设置

1、主库配置

/etc/my.cnf

log_bin=mysql_bin

server_id=129

重启数据库

2、建立同步账号

建立账号

mysql> create user 'rep2'@'%' identified with mysql_native_password by '123456';

授权

mysql> grant replication slave on *.* to 'rep2'@'%';

刷新权限

mysql> flush privileges;

3、锁表设置只读,为后面备份做准备

mysql> flush tables with read lock;
mysql> show variables like '%timeout%';

提示:如果超过设置时间不操作会自动解锁。

测试锁表后是否可以创建数据库

4、查看主库状态

mysql> show master status;

5、备份数据库

mysqldump -uroot -p -A -B |gzip > /server/backup/mysql_bak.$(date +%F).sql.gz

6、解锁

mysql> unlock tables;

7、从主库备份数据上传到从库

scp /server/backup/mysql_bak.2015-11-18.sql.gz 192.168.95.130:/server/backup/

从库上设置

1、配置从库

/etc/my.cnf

log_bin = /data/mysql/data/mysql-bin

server_id = 131

2、还原从主库传来的备份的数据

cd /server/backup/
gzip -d mysql_bak.2015-11-18.sql.gz
mysql -uroot -p < mysql_bak.2015-11-18.sql

检查还原

mysql -uroot -p -e 'show databases;'

3、设定从主库同步

mysql> change master to mysql>MASTER_HOST='192.168.211.129', mysql>MASTER_PORT=3306,
mysql>MASTER_USER='rep2', mysql>MASTER_PASSWORD='123456', mysql>MASTER_LOG_FILE='mysql-bin.000001', mysql>MASTER_LOG_POS=1460;

HOST 为主库ip,PORT为主库端口,USER为同步账号的名,PASSWORD为同步账号的密码,LOG_FILE为主库状态的file名,LOG_POS为主库Position的值

4、启动同步开关

mysql> start slave;

5、检查状态

mysql> show slave statusG

当这两条为YES就ok了

当从库是用主库克隆出来的

主库设置

1、主库配置

/etc/my.cnf

log_bin=mysql_bin

server_id=129

重启数据库

2、建立同步账号

建立账号

mysql> create user 'rep2'@'%' identified with mysql_native_password by '123456';

授权

mysql> grant replication slave on *.* to 'rep2'@'%';

刷新权限

mysql> flush privileges;

因为是克隆,所以主库有的,从库也有,就不用备份传输

3、查看主库状态

mysql> show master status;

从库上设置

1、配置从库

/etc/my.cnf

log_bin = /data/mysql/data/mysql-bin

server_id = 131

3、设定从主库同步

mysql> change master to mysql>MASTER_HOST='192.168.211.129', mysql>MASTER_PORT=3306,
mysql>MASTER_USER='rep2', mysql>MASTER_PASSWORD='123456', mysql>MASTER_LOG_FILE='mysql-bin.000001', mysql>MASTER_LOG_POS=1460;

HOST 为主库ip,PORT为主库端口,USER为同步账号的名,PASSWORD为同步账号的密码,LOG_FILE为主库状态的file名,LOG_POS为主库Position的值

4、启动同步开关

mysql> start slave;

5、检查状态

mysql> show slave statusG

克隆出来的一次不会成功,会碰到问题

问题1

当查看从库的状态信息,出现Slave_IO_Running: Connecting 因为是克隆出来的 主库得UUID和从库得UUID是一样的

所以,将从库的UUID修改成不一样的就ok

ll /var/lib/mysql/auto.cnf
rm -f /var/lib/mysql/auto.cnf

/var/lib/mysql/auto.cnf里存的是UUID,将从库的auto.cnf删除,重启mysql就会自动生成新的auto.cnf文件,里面也会自动生成新的UUID。

问题2

在主库上重新授权

GRANT ALL PRIVILEGES ON *.* TO 'rep2'@'%';

刷新权限

flush privileges;

从库从新启动Slave并查看状态

stop slave;
start slave;
show slave status G

问题就会解决

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1040483.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号