mysql主主模式配置

来源:互联网 发布:tensorflow 版本 编辑:程序博客网 时间:2024/05/22 03:49

首先介绍一下环境:

虚拟机网络配置:这里配置的是虚拟机里面的桥接网络模式。之前使用nat模式,Slave_IO_Running: No,数据库不能同步,痛苦很久,所以这里一定要注意啊

确保两个mysql主机数据库,数据一致。很重要。可以使用mysqldump备份数据到另外一台主机

主机名 操作系统 IP

DB1(maser) centos6.5192.168.15.103

DB2(slave) centos6.5192.168.15.104

1,修改MySql配置文件

默认情况下,mysql的配置文件在/etc/my.cnf,首先修改DB1的配置文件,

其中黑体加粗的部分为添加的内容

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
max_allowed_packet=100M
server-id=1
log-bin=mysql-bin
relay-log=mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

然后修改DB2的主机配置文件,

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
max_allowed_packet=100M
server-id=2
log-bin=mysql-bin
relay-log=mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

二,创建复制用户并授权

1.首先在DB1的mysql数据库创建复制用户

grant replication slave on *.* to 'repl'@'192.168.15.104' identified by '123456';

show master status;

ran


然后在DB2的mysql库中江DB1设置为自己的主服务器,在DB2的mysql数据库操作如下:

stop slave;

 change master to  master_host='192.168.15.103', master_user='repl', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=261;

start slave;


这里需要注意的是:master_log_file=mysql-bin.000001,master_log_pos=261 这里的两个数值刚好是show master status;查询的结果。

下面查看DB2上面的运行结果:

这里需要注意的是:下面的这两个只必须都为yes,表明复制进程正常运行,

Slave_IO_Running: Yes
Slave_SQL_Running: Yes


至此mysql的主从复制已经配置完成。接下来配置DB2到DB1的主从复制。

首先在DB2上面创建主从复制,在DB2的mysql数据库操作如下:

grant replication slave on *.* to 'repl'@'192.168.15.103' identified by '123456';

show master status;



在DB1的数据库中将DB2设置为自己的主服务器,在DB1数据库上面操作如下

 slave stop;

 change master to  master_host='192.168.15.104', master_user='repl', master_password='123456', ma', master_log_pos=261;

slave start;


下面查看DB1的salve的运行状态:如果Slave_IO_Running: Yes      Slave_SQL_Running: Yes都是yes,则表明DB1上面的复制服务运行正常。

show slave status;


至此mysql双主模式配置完成。


测试mysql的主主复制功能。

在DB1上面创建数据库

create database repldb;

use repldb

 create table repl_table(id int, email varchar(80),password varchar(40) not null);

在DB2上面查看:

或者在DB2上面创建,在DB1上面查看。


常见报错:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'stop' at line 1

解决办法。slave stop;
重新执行:change  master to  master_host='192.168.15.103', master_user='repl', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=261;
开启slave功能
salve start;

2,查看状态报错:
show slave status\G;
Slave_IO_Running: No
               Slave_SQL_Running: Yes

截止查看日志报错:[ERROR] Slave I/O: error connecting to master 'repl@192.168.15.103:3306' - retry-time: 60  retries: 86400, Error_code: 2013

解决办法:删除master.info重启数据库    rm -rf /var/lib/mysql/master.info  这个是保持数据库的用户和密码文件,

或者是虚拟机里面需要设置为桥接网络,重启虚拟机,(我的问题是虚拟机),

或者是删除所有的mysql-bin.*的所有文件,和 mysql-relay-bin.*文件,然后重新配置。


ERROR 2006 (HY000): MySQL server has gone away

原因是:部分表太大,修改my.cf文件,添加max_allowed_packet=100M

这查看状态max_allowed_packet=100M
show slave status\G;
主要查看是否全是是yes
Slave_IO_Running: No
            Slave_SQL_Running: Yes

0 0