0

0

MySQL双Master配置_MySQL

php中文网

php中文网

发布时间:2016-05-30 17:10:22

|

1059人浏览过

|

来源于php中文网

原创

主机环境说明。

master1: 10.8.1.11

master2: 10.8.1.12

版本信息:

    [root@m1 ~]# 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。

    [root@m1 ~]# 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 replication@'%'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

 

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

    [root@m1 ~]# 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

    [root@m1 ~]# 

 

 

6、解除锁表

 

mysql>unlock tables;

或直接quit退出即可。

 

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

 

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

[root@m2 ~]# 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的假象

 

#

至于这些参数的说明具体看手册。

 

红色的部分非常重要,如果一个MASTER 挂掉的话,另外一个马上接管。

紫红色的部分指的是服务器频繁的刷新日志。这个保证了在其中一台挂掉的话,日志刷新到另外一台。从而保证了数据的同步 

#/etc/init.d/mysql restart

新生代企业网站管理系统2.0 GBK build 091011
新生代企业网站管理系统2.0 GBK build 091011

新生代企业网站管理系统是一款基于php+mysql+smarty的免费开源建站系统。整套系统的设计构造,完全考虑大中小企业类网站的功能要求,网站的后台功能强大,管理简捷,支持模板机制,配置中英文双语言版。通过新生代企业网站管理系统,企业建站者可以轻松构建一个企业网站,让企业用户可以更加便捷了解企业的相关信息与动态;方便快捷地发布企业信息、产品等;更可以十分方便的通过管理平台管理企业的站内新闻、产品

下载

 

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表。

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

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

1

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

5

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

30

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

3

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

2

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 777人学习

mysql8主从复制原理底层详解
mysql8主从复制原理底层详解

共1课时 | 514人学习

SQL优化与排查(MySQL版)
SQL优化与排查(MySQL版)

共26课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号