MySQL双Master配置

主机环境说明。

master1: 10.8.1.11

master2: 10.8.1.12

版本信息:

[[email protected] ~]# mysql -V

mysql  Ver 14.14 Distrib 5.6.27, for Linux (x86_64) using  EditLine wrapper

1、主库开启bin-log功能,配置server-id

修改my.cf配置文件,开启bin-log功能,配置server-id。

[[email protected] ~]# more /etc/my.cnf

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]

server-id = 1

datadir = /var/lib/mysql

log_bin = /var/lib/mysql/bin-log

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

slave_net_timeout = 60

log-slave-updates

slave-skip-errors=all

skip-name-resolve

sync_binlog=1

auto_increment_increment=2

auto_increment_offset=1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#salve-net-timeout默认是3600秒,缩短时间是为了防止双YES的假象

#(事实上我已遇到,参考地址:http://www.cnblogs.com/billyxp/p/3470376.html

如果要指定同步或不同步哪些库,可使用如下参数

#binlog-do-db=osyunweidb   #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
#binlog-ignore-db=mysql    #不同步mysql系统数据库

至于这些参数的说明具体看手册。
红色的部分非常重要,如果一个MASTER 挂掉的话,另外一个马上接管。
紫红色的部分指的是服务器频繁的刷新日志。这个保证了在其中一台挂掉的话,日志刷新到另外一台。从而保证了数据的同步

2、确认bin-log与server-id是否开启:

查看命令 show variables like ‘log_bin‘; show variables like ‘server_id‘;

mysql> show variables like ‘log_bin‘;

+---------------+-------+

|Variable_name | Value |

+---------------+-------+

|log_bin       | ON   |

+---------------+-------+

1 rowin set (0.00 sec)

mysql>show variables like ‘server_id‘;

+---------------+-------+

|Variable_name | Value |

+---------------+-------+

|server_id     | 1     |

+---------------+-------+

1 rowin set (0.00 sec)

3、创建复制授权用户

mysql> grant replication slave on *.* to [email protected]‘%‘identified by ‘123456‘; #授权该用户对所有表都能进行复制

mysql>flush privileges;  #刷新权限

4、锁表,记录log-bin文件名和位置

mysql>flush tables with read lock;     #锁定所有表,此时数据库不能写入数据

QueryOK, 0 rows affected (0.05 sec)

mysql>show master status;      #查看最新bin-log文件及位置

+------------------------+------------+-------------------+-------------------------+

|File                   | Position   | Binlog_Do_DB      | Binlog_Ignore_DB        |

+------------------------+------------+-------------------+-------------------------+

|mysql-bin.000001       |  26314    |                   |                        |

+------------------------+------------+-------------------+-------------------------+

1row in set (0.00 sec)

5、锁表状态全备mysql数据

由于退出当前mysql登陆窗口,锁表功能就失效,需克隆一个会话进行全备。

#mysqldump-uroot -p -A -B > /tmp/mysql_bak_2015_11_17.sql

看下备份数据大小,确认备份成功。

[[email protected] ~]# ls -l mysql_bak_2015_11_17.sql

-rw-r--r--. 1 root root 645327 Nov 18 06:27 mysql_bak_2015_11_17.sql

[[email protected] ~]#

6、解除锁表

mysql>unlock tables;

或直接quit退出即可。

7、从库开启bin-log功能,配置server-id

从库开启bin-log功能后,待会在主上在配置同步,互为主从就完成了。

[[email protected] ~]# vi /etc/my.cnf

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]

server-id = 2

datadir = /var/lib/mysql

log_bin = /var/lib/mysql/mysql-bin

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

slave_net_timeout = 60

log-slave-updates

slave-skip-errors=all

skip-name-resolve

sync_binlog=1

auto_increment_increment=2

auto_increment_offset=2

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#salve-net-timeout默认是3600秒,缩短时间是为了防止双YES的假象

#(参考地址:http://www.cnblogs.com/billyxp/p/3470376.html

至于这些参数的说明具体看手册。
红色的部分非常重要,如果一个MASTER 挂掉的话,另外一个马上接管。
紫红色的部分指的是服务器频繁的刷新日志。这个保证了在其中一台挂掉的话,日志刷新到另外一台。从而保证了数据的同步

#/etc/init.d/mysql restart

8、确认从库bin-log与server-id是否开启

查看命令 show variables like ‘log_bin‘; show variables like ‘server_id‘;

mysql>show variables like ‘log_bin‘;

+---------------+-------+

|Variable_name | Value |

+---------------+-------+

|log_bin       | ON    |

+---------------+-------+

1row in set (0.00 sec)

mysql>show variables like ‘server_id‘;

+---------------+-------+

|Variable_name | Value |

+---------------+-------+

|server_id     | 2     |

+---------------+-------+

1row in set (0.00 sec)

9、从库导入主库的全备数据

登陆mysql导入数据

mysql>source /root/mysql_bak_2015_11_17.sql 

10、记录从库bin-log信息

因为在从库导入全备数据时,此时主库与从库的内容是一致的,但是bin-log位置不一定一致。

mysql>show master status;      #查看最新bin-log文件及位置

+------------------------+------------+-------------------+-------------------------+

|File                   |Position   | Binlog_Do_DB      | Binlog_Ignore_DB        |

+------------------------+------------+-------------------+-------------------------+

|mysql-bin.000003       |  2328055   |                   |                        |

+------------------------+------------+-------------------+-------------------------+

1row in set (0.00 sec)

11、从库设置同步主库

此处binlog文件与位置状态,是主库在步骤4锁表时show master status查看的位置状态。

CHANGE MASTER TO 

MASTER_HOST=‘10.8.1.11‘,

MASTER_PORT=3306,

MASTER_USER=‘replication‘,

MASTER_PASSWORD=‘123456‘,

MASTER_LOG_FILE=‘mysql-bin.000001‘,

MASTER_LOG_POS=26314;

12、开启从库同步并确认同步是否成功

使用start slave开启同步功能,使用show slave status\G查看同步是否成功

mysql>start slave;

QueryOK, 0 rows affected (0.00 sec)

mysql>show slave status\G   #\G不按表格输出

***************************1. row ***************************

Slave_IO_State: Waiting formaster to send event

Master_Host: 10.0.0.2

Master_User: replication

Master_Port: 8306

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 136270

Relay_Log_File:mysqld-relay-bin.000002

Relay_Log_Pos: 72697

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running:Yes

Slave_SQL_Running:Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 98758

Relay_Log_Space: 110366

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 622   #查看主从同步延迟,延迟大则可能需要优化

Master_SSL_Verify_Server_Cert:No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

1row in set (0.00 sec)

#sql线程与IO线程都是YES,slave配置成功。

13、主库设置同步从库

由于从库是全备导入,原先在主库上配置的复制帐户也同样导入,所以这里不用在从库上新授权复制用户。

从库上的binlog文件与位置状态,是从库在刚导入时show master status查看到的位置状态。

CHANGEMASTER TO

MASTER_HOST=‘10.8.1.12‘,

MASTER_PORT=3306,

MASTER_USER=‘replication‘,

MASTER_PASSWORD=‘123456‘,

MASTER_LOG_FILE=‘mysql-bin.000003‘,

MASTER_LOG_POS=2328055;

#修改相应信息,直接把这些配置在mysql中粘贴即可。

14、开启同步并确认同步是否成功

使用start slave开启同步功能,使用show slave status\G查看同步是否成功

mysql>start slave;

QueryOK, 0 rows affected (0.00 sec)

mysql>show slave status\G

***************************1. row ***************************

Slave_IO_State: Waiting formaster to send event

Master_Host: 172.16.0.2

Master_User: replication

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000007

Read_Master_Log_Pos: 107

Relay_Log_File:mysqld-relay-bin.000006

Relay_Log_Pos: 253

Relay_Master_Log_File: mysql-bin.000007

Slave_IO_Running: Yes

Slave_SQL_Running:Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 107

Relay_Log_Space: 556

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert:No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 2

1row in set (0.00 sec)

#IO线程与sql线程都是正常。

15、互为主从测试

在两台mysql各创建一个库,看两边是否都能进行同步。

分别在主库上执行 create database test01;

从库上执行create database test02;

看两台数据库上执行show databases;,看是否都有test01表和test02表。

我的经过测试,双主测试成功。

#(参考地址:http://yangrong.blog.51cto.com/6945369/1569700

#(参考地址:http://www.jb51.net/article/38657.htm

时间: 2024-10-06 23:36:33

MySQL双Master配置的相关文章

MySQL双主配置

MySQL双主配置 准备环境:服务器操作系统为RHEL6.4 x86_64,为最小化安装.主机A和主机B均关闭防火墙和SELINUX ,IP地址分别为192.168.131.129和192.168.131.130,MySQL版本为5.6.26,为通用二进制包. 安装MySQL 1.主机A操作 # tar xf mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz # mv mysql-5.6.26-linux-glibc2.5-x86_64 /usr/local/m

mysql双主配置及其注意事项

mysql双主配置及其注意事项 主库配置 [mysqld] server-id = 1 log-bin=mysql1-bin #salve-net-timeout默认是3600秒,缩短时间是为了防止双YES的假象 slave-net-timeout=60 auto_increment_offset=2 auto_increment_increment=2 如果要指定同步或不同步哪些库,可使用如下参数 #binlog-do-db=osyunweidb #需要同步的数据库名,如果有多个数据库,可重复

Mysql双主+keepalived实现HA

下面是从网上看到的Mysql双主+keepalived实现HA的介绍,搭建双主是没有问题的,问题在于如果互为主从的一台机器如果挂掉了,并且另外一台机器的数据还不是从库中最新的,那么这个时候就会出问题.并且,两台互为主从的数据库二进制日志必须完全一致.要保证这一点,就必须在安装应用的时候都要规划好. 关于MySQL-HA,目前有多种解决方案,比如heartbeat.drbd.mmm.共享存储,但是它们各有优缺点.heartbeat.drbd配置较为复杂,需要自己写脚本才能实现MySQL自动切换,对

MySQL双主.md

MySQL 双主配置 环境说明 系统 IP 主机名 mysql版本 CentOS 6.8 192.168.197.61 C6-node1 5.6.36 CentOS 6.8 192.168.197.62 C6-node2 5.6.36 MySQL安装这里不做介绍,下面是其配置文件.这里测试使用的是没有数据的纯净数据库. node1节点配置 配置文件 [mysqld] datadir=/data/mysql port=3306 socket=/tmp/mysql.sock pid=/data/my

mysql使用keepalived搭建双master

这里的双master并不是2个都同时对应用开放写,只是同一个时刻只有1个mysql对外开放写,另一个作为slave接受从master同步过来的数据,当master挂掉后,通过keepalived的VIP转移,使slave变成master,从而形成高可用的环境 keepalived的master配置如下 vrrp_script mycheck {        script "/usr/local/keepalived/shutdown.sh"        interval 2    

MySQL Replication, 主从和双主配置

MySQL Replication, 主从和双主配置 MySQL的Replication是一种多个MySQL的数据库做主从同步的方案,特点是异步,广泛用在各种对MySQL有更高性能,更高可靠性要求的场合.与之对应的另一个技术是同步的MySQL Cluster,但因为比较复杂,使用者较少.   下图是MySQL官方给出了使用Replication的场景: Replication原理   Mysql 的 Replication 是一个异步的复制过程,从一个MySQL节点(称之为Master)复制到另

MySQL双主多从+Keepalived配置

目录 一 基础环境 二 实际部署 2.1 MySQL双主+Keepalived高可用 2.2 所有Slave节点配置配置 2.3 所有Slave节点创建账号 2.4 Slave节点配置Master01为主 一 基础环境 主机名 系统版本 MySQL版本 主机IP Master01 CentOS 6.8 MySQL 5.6 172.24.8.10 Master02 CentOS 6.8 MySQL 5.6 172.24.8.11 VIP 172.24.8.12 Slave01 CentOS 6.8

mysql双主使用reset master清除日志要小心

假设a.b两台服务器做了mysql双主. 有一表是tab是这样的 create table tab(id int primary key auto_increment,name varchar(20)); 然后 如果是mysql主从的话,a是主,那么a机 reset master; 然后b机 stop slave; reset slave; start slave; 如果在a机reset master之后,b机stop slave之前,有新数据插入.删除等操作,当b机start slave后,b

mysql数据库主从同步之双主配置----互为主从

Mysql数据库复制原理: 整体上来说,复制有3个步骤: (1)master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events): (2)slave将master的binary log events拷贝到它的中继日志(relay log): (3)slave重做中继日志中的事件,将改变反映它自己的数据. 下图描述了复制的过程: 该过程的第一部分就是master记录二进制日志.在每个事务更新数据完成之前,master在二进制日志记录这些