[转]Mysql 5.6 双主配置 自动同步脚本

#  mysql 版本: 5.6.11 

# 操作系统版本: rhel 6.2 

# Master 的 my.cnf 配置( 只贴M/M 结构部分)

  1. log-bin=fabian
  2. server-id=1
  3. binlog-do-db=TSC
  4. binlog-do-db=adb
  5. binlog-ignore-db=mysql
  6. replicate-do-db=TSC
  7. replicate-do-db=adb
  8. replicate-ignore-db=mysql
  9. log-slave-updates
  10. slave-skip-errors=all
  11. auto_increment_increment=2
  12. auto_increment_offset=1

# Slave 的my.cnf 配置(只贴M/M结构部分)

  1. log-bin=fabian
  2. server-id=2
  3. binlog-do-db=TSC
  4. binlog-do-db=adb
  5. binlog-ignore-db=mysql
  6. replicate-do-db=TSC
  7. replicate-do-db=adb
  8. replicate-ignore-db=mysql
  9. log-slave-updates
  10. slave-skip-errors=all
  11. auto_increment_increment=2
  12. auto_increment_offset=2


对上面参数作出部分解释:

  1. log-bin=fabian #M/S 需开启log-bin 日记文件
  2. server-id=1 #指定server-id 必须不一致,M/s 结构时 M > S
  3. binlog-do-db=TSC #同步数据库名称
  4. binlog-ignore-db=mysql #忽略数据名称
  5. replicate-do-db=TSC #用于控制slave来执行同步的行为
  6. replicate-ignore-db=mysql #用于控制slave来执行同步的行为
  7. log-slave-updates #把更新的记录写到二进制文件中
  8. slave-skip-errors=all #跳过错误,继续执行复制
  9. auto_increment_increment=2 #设置主键单次增量
  10. auto_increment_offset=1 #设置单次增量中主键的偏移量
  11. #expire_logs_days = 20 #设置log-bin 超过多少天删除
  12. max-binlog-size= 512M
  13. # auto_increment_increment、auto_increment_offset 可以防止双主主键冲突问题


对开启权限、grant 这些基本的这里就不在详细说明,面贴出自动建立同步的gant 脚本,项目在生产过程中总会遇到Mysql 数据库服务器宕机等情况,可用以下脚本来重新构建Master -to-Master 环境。

    1. #!/bin/bash
    2. # Setting Variables
    3. _REMOTEHOST=192.168.1.51 #远程主机IP
    4. _LOCALHOST=192.168.1.52 #本地主机IP
    5. _USER=root #用户名
    6. _REMOTEPASD=123456 #远程主机密码
    7. _LOCALPASD=123456 #本地主机密码
    8. _BASE=TSC
    9.  _LF=`mysql -u root -h $_REMOTEHOST -p$_REMOTEPASD -e "show master status\G;" | awk '/File/ {print $2}'`
    10.  _LLF=`mysql -u root -p$_LOCALPASD -e "show master status\G;" | awk '/File/ {print $2}'`
    11.  _PS=`mysql -u root -h $_REMOTEHOST -p$_REMOTEPASD -e "show master status\G;" | awk '/Position/ {print $2}'`
    12.  _LPS=`mysql -u root -p$_LOCALPASD -e "show master status\G;" | awk '/Position/ {print $2}'`
    13. # Backup Mysql
    14. mysqldump -u root -h $_REMOTEHOST -p$_REMOTEPASD $_BASE > $_BASE.sql
    15. mysql -u root -p$_LOCALPASD $_BASE < $_BASE.sql
    16. rm -rf $_BASE.sql
    17. mysql -uroot -p$_LOCALPASD -e "stop slave;"
    18. mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e "stop slave;"
    19. 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
    20. 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
    21. sed -ri 's/\+/"/g' tmp
    22. sed -ri 's/\+/"/g' tmp2
    23. sed -ri "s/\*/\'/g" tmp
    24. sed -ri "s/\*/\'/g" tmp2
    25. sh tmp
    26. sh tmp2
    27. rm -rf tmp
    28. rm -rf tmp2
    29. mysql -uroot -p$_LOCALPASD -e "start slave;"
    30. mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e "start slave;"
    31. mysql -uroot -p$_LOCALPASD -e "show slave status\G;" | awk '$0 ~/Host/ || $0 ~/State/'
    32. mysql -h $_REMOTEHOST -uroot -p$_LOCALPASD -e "show slave status\G;" | awk '$0 ~/Host/ || $0 ~/State/'

#脚本执行完成后出现下图则表示成功:

    1. [root@ORA2 fabian]# sh gant.sh
    2. Warning: Using a password on the command line interface can be insecure.
    3. Warning: Using a password on the command line interface can be insecure.
    4. Warning: Using a password on the command line interface can be insecure.
    5. Warning: Using a password on the command line interface can be insecure.
    6. Warning: Using a password on the command line interface can be insecure.
    7. Warning: Using a password on the command line interface can be insecure.
    8. Warning: Using a password on the command line interface can be insecure.
    9. Warning: Using a password on the command line interface can be insecure.
    10. Warning: Using a password on the command line interface can be insecure.
    11. Warning: Using a password on the command line interface can be insecure.
    12. Warning: Using a password on the command line interface can be insecure.
    13. Warning: Using a password on the command line interface can be insecure.
    14. Slave_IO_State: Queueing master event to the relay log
    15. Master_Host: 192.168.1.51
    16. Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
    17. Warning: Using a password on the command line interface can be insecure.
    18. Slave_IO_State: Queueing master event to the relay log
    19. Master_Host: 192.168.1.52
    20. Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
    21. [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条评论!

发表评论

更换一道题!
放大的图片