数据库主主同步

2018-12-27  本文已影响0人  山中人T

1. 修改数据库配置文件 my.cnf

# vim /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# 服务器的ID, 必须唯一,一般设置自己的IP

server_id=241

# 复制过滤:不需要备份的数据库(MySQL库一般不同步)

binlog-ignore-db=mysql

# 开启二进制日志功能,名字可以随便取,最好有含义(比如项目名)

log-bin=edu-mysql-bin

# 为每个 session 分配的内存,在事务过程中用来存储二进制日志的缓存

binlog_cache_size=1M

# 主从复制的格式(mixed,statement,row,默认格式是 statement)

binlog_format=mixed

# 二进制日志自动删除/过期的天数。默认值为 0,表示不自动删除。

expire_logs_days=7

## 跳过主从复制中遇到的所有错误或指定类型的错误,避免 slave 端复制中断。

## 如:1062 错误是指一些主键重复,1032 错误是因为主从数据库数据不一致

slave_skip_errors=1062

# 作为从服务器时的中继日志

relay_log=edu-mysql-relay-bin

# log_slave_updates 表示 slave 将复制事件写进自己的二进制日志

log_slave_updates=1

# 主键自增规则,避免主从同步ID重复的问题

auto_increment_increment=2   # 自增因子(每次加2)

auto_increment_offset=1         #  自增偏移(一个填1,另一个填2)

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

修改完成后重启数据库

/etc/init.d/mysqld restart

2. 配置同步账号并开启同步

设置 masterA (假设IP 为 192.168.188.2)

# mysql -uroot -p123456     #  登录mysql,不要照抄,-u后面是账号,-p后面是密码

grant replication slave on *.* to 'repl'@'192.168.188.3' identified by '123456';  // 创建mysql账号repl,只容许指定ip访问,这里设置为MasterB

flush privileges;            // 刷新授权表信息

flush tables with read lock;    // 锁定数据库表暂时无法写服务;

show master status;        // 查看binlog文件值与pos值

stop slave;            // 关闭同步

设置 masterB(192.168.188.3)

# mysql -uroot -p123456     #  登录mysql,不要照抄,-u后面是账号,-p后面是密码

grant replication slave on *.* to 'repl'@'192.168.188.2' identified by '123456';     //创建用户,允许MasterA登录本机器

flush privileges;                //刷新授权表

stop slave;                        //关闭同步

show master status;        //查看binlog文件值与pos值

change master to master_host='192.168.188.2', master_user='repl', master_password='123456', master_log_file='test01.000001', master_log_pos=664383;  //这里注意log_file与pos值都要对应对应A的  show master status;值

start slave; //开启同步

设置 masterA

change master to master_host='192.168.188.3', master_user='repl', master_password='123456', master_log_file='test02.000001', master_log_pos=664343; //这里log_file与pos值写的必须是B上show master status;的值

start slave;                    //开启同步

unlock tables;                //解锁写

3. 查看同步状态

show slave status\G;

主要看以下两个参数,这两个参数如果是Yes就表示主从同步正常

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

引用:https://blog.csdn.net/xiyang_1990/article/details/51420513

上一篇下一篇

猜你喜欢

热点阅读