您的位置:首页 > 数据库 > MySQL

mysql主主模式配置

2015-09-05 17:27 405 查看
首先介绍一下环境:

虚拟机网络配置:这里配置的是虚拟机里面的桥接网络模式。之前使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: