[转]Mysql 5.6 双主配置 自动同步脚本
# mysql 版本: 5.6.11
# 操作系统版本: rhel 6.2
# Master 的 my.cnf 配置( 只贴M/M 结构部分)
- log-bin=fabian
- server-id=1
- binlog-do-db=TSC
- binlog-do-db=adb
- binlog-ignore-db=mysql
- replicate-do-db=TSC
- replicate-do-db=adb
- replicate-ignore-db=mysql
- log-slave-updates
- slave-skip-errors=all
- auto_increment_increment=2
- auto_increment_offset=1
# Slave 的my.cnf 配置(只贴M/M结构部分)
- log-bin=fabian
- server-id=2
- binlog-do-db=TSC
- binlog-do-db=adb
- binlog-ignore-db=mysql
- replicate-do-db=TSC
- replicate-do-db=adb
- replicate-ignore-db=mysql
- log-slave-updates
- slave-skip-errors=all
- auto_increment_increment=2
- auto_increment_offset=2
对上面参数作出部分解释:
- log-bin=fabian #M/S 需开启log-bin 日记文件
- server-id=1 #指定server-id 必须不一致,M/s 结构时 M > S
- binlog-do-db=TSC #同步数据库名称
- binlog-ignore-db=mysql #忽略数据名称
- replicate-do-db=TSC #用于控制slave来执行同步的行为
- replicate-ignore-db=mysql #用于控制slave来执行同步的行为
- log-slave-updates #把更新的记录写到二进制文件中
- slave-skip-errors=all #跳过错误,继续执行复制
- auto_increment_increment=2 #设置主键单次增量
- auto_increment_offset=1 #设置单次增量中主键的偏移量
- #expire_logs_days = 20 #设置log-bin 超过多少天删除
- max-binlog-size= 512M
-
- # auto_increment_increment、auto_increment_offset 可以防止双主主键冲突问题
对开启权限、grant 这些基本的这里就不在详细说明,面贴出自动建立同步的gant 脚本,项目在生产过程中总会遇到Mysql 数据库服务器宕机等情况,可用以下脚本来重新构建Master -to-Master 环境。
- #!/bin/bash
- # Setting Variables
- _REMOTEHOST=192.168.1.51 #远程主机IP
- _LOCALHOST=192.168.1.52 #本地主机IP
- _USER=root #用户名
- _REMOTEPASD=123456 #远程主机密码
- _LOCALPASD=123456 #本地主机密码
- _BASE=TSC
-
- _LF=`mysql -u root -h $_REMOTEHOST -p$_REMOTEPASD -e "show master status\G;" | awk '/File/ {print $2}'`
- _LLF=`mysql -u root -p$_LOCALPASD -e "show master status\G;" | awk '/File/ {print $2}'`
- _PS=`mysql -u root -h $_REMOTEHOST -p$_REMOTEPASD -e "show master status\G;" | awk '/Position/ {print $2}'`
- _LPS=`mysql -u root -p$_LOCALPASD -e "show master status\G;" | awk '/Position/ {print $2}'`
-
- # Backup Mysql
- mysqldump -u root -h $_REMOTEHOST -p$_REMOTEPASD $_BASE > $_BASE.sql
- mysql -u root -p$_LOCALPASD $_BASE < $_BASE.sql
- rm -rf $_BASE.sql
-
- mysql -uroot -p$_LOCALPASD -e "stop slave;"
- mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e "stop slave;"
-
- echo "mysql -uroot -p$_LOCALPASD -e +change master to master_REMOTEHOST=*${_REMOTEHOST}*,master_user=*${_USER}*,master_password=*${_REMOTEPASD}*,master_log_file=*${_LF}*,master_log_pos=${_PS};+" > tmp
- echo "mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e +change master to master_REMOTEHOST=*${_LOCALHOST}*,master_user=*${_USER}*,master_password=*${_LOCALPASD}*,master_log_file=*${_LLF}*,master_log_pos=${_LPS};+" > tmp2
-
-
- sed -ri 's/\+/"/g' tmp
- sed -ri 's/\+/"/g' tmp2
- sed -ri "s/\*/\'/g" tmp
- sed -ri "s/\*/\'/g" tmp2
- sh tmp
- sh tmp2
- rm -rf tmp
- rm -rf tmp2
-
- mysql -uroot -p$_LOCALPASD -e "start slave;"
- mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e "start slave;"
-
- mysql -uroot -p$_LOCALPASD -e "show slave status\G;" | awk '$0 ~/Host/ || $0 ~/State/'
- mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e "show slave status\G;" | awk '$0 ~/Host/ || $0 ~/State/'
#脚本执行完成后出现下图则表示成功:
- [root@ORA2 fabian]# sh gant.sh
- Warning: Using a password on the command line interface can be insecure.
- Warning: Using a password on the command line interface can be insecure.
- Warning: Using a password on the command line interface can be insecure.
- Warning: Using a password on the command line interface can be insecure.
- Warning: Using a password on the command line interface can be insecure.
- Warning: Using a password on the command line interface can be insecure.
- Warning: Using a password on the command line interface can be insecure.
- Warning: Using a password on the command line interface can be insecure.
- Warning: Using a password on the command line interface can be insecure.
- Warning: Using a password on the command line interface can be insecure.
- Warning: Using a password on the command line interface can be insecure.
- Warning: Using a password on the command line interface can be insecure.
- Slave_IO_State: Queueing master event to the relay log
- Master_Host: 192.168.1.51
- Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
- Warning: Using a password on the command line interface can be insecure.
- Slave_IO_State: Queueing master event to the relay log
- Master_Host: 192.168.1.52
- Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
- [root@ORA2 fabian]#
---------- 至此完成 ----------
另一篇详细配置说明:https://www.cnblogs.com/fusheng11711/p/11508117.html
+1:https://www.cnblogs.com/running-mydream/p/4581687.html
linux的mysql主主_Linux下指定mysql数据库数据配置主主同步的实例
一、 概念:① 数据库同步 (主从同步 --- 主数据库写的同时 往从服务器写数据)
② 数据库同步 (主主同步 --- 两台数据库服务器互相写数据)
二、 举例
主主数据库同步服务器配置
数据库服务器(A) 主数据库 IP:192.168.1.134
数据库服务器(B) 主数据库 IP:192.168.1.138
两台服务器同步的用户名为: bravedu 密码: brave123
一、主数据库操作设置(A):
① 创建同步用户名 允许连接的 用户IP地址 (非本机IP)
复制代码 代码如下:
grant replication slave on *.* to 'bravedu'@'192.168.1.%' identified by 'brave123';
flush privileges;
② 更改mysql配置文件
复制代码 代码如下:
[mysqld]
server-id = 1
log-bin=/www/mysql/binlog/binlog (路径要根据自己的安装设置)
binlog-do-db = dbname (要同步的数据库名)
binlog-ignore-db=mysql
#相对应主从数据库同步不同的地方
复制代码 代码如下:
log-slave-updates
sync_binlog=1
auto_increment_offset=1
auto_increment_increment=2
replicate-do-db = dbname
replicate-ignore-db = mysql,information_schema
重启mysql服务器
③ 查看主数据库同步状态 IP: ***.134
复制代码 代码如下:
mysql>flush tables with read lock;
mysql>show master status\G
*************************** 1. row ***************************
File: mysql-bin.000001 (这里注意 设置从服务器的时候要用)
Position: 106 (这里注意设置从服务器的时候要用)
Binlog_Do_DB: dbname
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
mysql>unlock tables;
*****主服务器到目前位置设置完毕*******
二、从数据库操作设置(B):
① 创建同步用户名
复制代码 代码如下:
grant replication slave on *.* to 'bravedu'@'192.168.1.%' identified by 'brave123';
flush privileges;
② 更改mysql配置文件
复制代码 代码如下:
[mysqld]
server-id = 2
log-bin=/www/mysql/binlog/binlog (路径要根据自己的安装设置)
binlog-do-db = dbname (要同步的数据库名)
binlog-ignore-db= mysql,information_schema
#相对于主从同步不同的地方
binlog-do-db = dbname
binlog-ignore-db=mysql
log-slave-updates
sync_binlog=1
auto_increment_offset=2
auto_increment_increment=2
重启mysql服务器
查看主数据库同步状态 IP: ***.138
复制代码 代码如下:
mysql>flush tables with read lock;
mysql>show master status\G
*************************** 1. row ***************************
File: mysql-bin.000005 (这里注意 设置从服务器的时候要用)
Position: 106 (这里注意设置从服务器的时候要用)
Binlog_Do_DB: dbname
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
mysql>unlock tables;
③ 指定主主数据库服务器同步指令
注:IP为主服务器的IP,用户名,密码,log_file,log_post 服务器互相统一
可能这块操作 需要先 解除锁表、停止数据库状态、在运行后 在启动状态
复制代码 代码如下:
mysql > stop slave;
#设置192.168.1.138数据库服务器配置 那么host 配置文件信息 就是 134的信息
mysql > change master to master_host='192.168.1.134', master_user='bravedu', master_password='brave123', master_log_file='mysql-bin.000005', master_log_pos=106;
#设置192.168.1.134 数据库服务器配置 那么host 等配置文件信息 就是 134的信息
mysql > change master to master_host='192.168.1.138', master_user='bravedu', master_password='brave123', master_log_file='mysql-bin.000001', master_log_pos=106;
mysql > start slave;
mysql > unlock tables;
④ 查看主数据库同步状态 会出来很多信息 但是主要看这两个状态就行了 如果都是 yes 就可以了
复制代码 代码如下:
mysql>show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
至此,主主数据库同步成功配置完成。
原文链接:https://blog.csdn.net/weixin_35916710/article/details/113400996
默认分类 2020-01-22 23:24:34 通过 网页 浏览(1014)
共有0条评论!