资讯专栏INFORMATION COLUMN

MySQL 主从复制

Eastboat / 2137人阅读

摘要:的安装不再介绍直接说明和的配置配置启用二进制日志二进制日志格式使用混合模式服务器范围为每一个表使用独立的文件为保证事物安全在上启用同步二进制日志功能启动创建复制用户配置为保证数据在上启用只读对具有权限的用户

Mysql 的安装不再介绍, 直接说明 Master 和 Slave 的配置

Master 配置:
[mysqld]

datadir=/data/mysql

socket=/tmp/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

log-bin=master-bin #启用二进制日志

binlog_format=mixed #二进制日志格式使用混合模式

server-id=1 #服务器id,范围为{0-2^32}

innodb_file_per_table=1 #每一个innodb表使用独立的文件

sync-binlog=1 #为保证事物安全, 在master上启用同步二进制日志功能

 

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid
启动mysqld, 创建复制用户:
[root@keep1 ~]# service mysqld start

Starting MySQL...... SUCCESS!

[root@keep1 ~]# mysql

...

mysql> grant replication slave on *.* to "repluser"@"10.11.8.%" identified by "replpass";

Query OK, 0 rows affected (0.00 sec)

 

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)
Slave 配置:
[mysqld]

datadir=/data/mysql

socket=/tmp/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

#log-bin=master-bin

binlog_format=mixed

server-id=10

innodb_file_per_table=1

relay-log=relay-log

read-only=1 #为保证数据, 在slave上启用只读, 对具有super权限的用户不生效

 

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid
启动mysqld 服务:
[root@keep2 ~]# service mysqld start

Starting MySQL...... SUCCESS!
Master 节点查看二进制日志状态:
mysql> show master status;

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

| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| master-bin.000002 |      409 |              |                  |                   |

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

1 row in set (0.00 sec)

Slave 上 配置连接, 查看状态, 启动slave :

mysql> change master to master_host="10.11.8.219",master_user="repluser",master_password="replpass",master_log_file="master-bin.000002",master_log_pos=409;

Query OK, 0 rows affected, 2 warnings (0.03 sec)

mysql> show slave statusG

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

              Slave_IO_State:

                 Master_Host: 10.11.8.219

                 Master_User: repluser

                 Master_Port: 3306

               Connect_Retry: 60

             Master_Log_File: master-bin.000002

         Read_Master_Log_Pos: 409

              Relay_Log_File: relay-log.000001

               Relay_Log_Pos: 4

       Relay_Master_Log_File: master-bin.000002

            Slave_IO_Running: No #此时IO和SQL都处于停止状态

           Slave_SQL_Running: No

             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: 409 #slavev上执行到了第几个

             Relay_Log_Space: 120

             Until_Condition: None

              Until_Log_File:

               Until_Log_Pos: 0

          Master_SSL_Allowed: No #是否允许使用SSL

          Master_SSL_CA_File:

          Master_SSL_CA_Path:

             Master_SSL_Cert:

           Master_SSL_Cipher:

              Master_SSL_Key:

       Seconds_Behind_Master: NULL #slave比master慢多少

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: 0

                 Master_UUID:

            Master_Info_File: /data/mysql/master.info

                   SQL_Delay: 0

         SQL_Remaining_Delay: NULL

     Slave_SQL_Running_State:

          Master_Retry_Count: 86400

                 Master_Bind:

     Last_IO_Error_Timestamp:

    Last_SQL_Error_Timestamp:

              Master_SSL_Crl:

          Master_SSL_Crlpath:

          Retrieved_Gtid_Set:

           Executed_Gtid_Set:

               Auto_Position: 0

1 row in set (0.00 sec)

mysql> start slave; #启动Slave

Query OK, 0 rows affected (0.00 sec)



mysql> show slave statusG

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

              Slave_IO_State: Waiting for master to send event

                 Master_Host: 10.11.8.219

                 Master_User: repluser

                 Master_Port: 3306

               Connect_Retry: 60

             Master_Log_File: master-bin.000002

         Read_Master_Log_Pos: 409

              Relay_Log_File: relay-log.000002

               Relay_Log_Pos: 284

       Relay_Master_Log_File: master-bin.000002

            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: 409

             Relay_Log_Space: 451

             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: 1

                 Master_UUID: 441052e5-28c9-11e6-9cd1-0800274f81c9

            Master_Info_File: /data/mysql/master.info

                   SQL_Delay: 0

         SQL_Remaining_Delay: NULL

     Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

          Master_Retry_Count: 86400

                 Master_Bind:

     Last_IO_Error_Timestamp:

    Last_SQL_Error_Timestamp:

              Master_SSL_Crl:

          Master_SSL_Crlpath:

          Retrieved_Gtid_Set:

           Executed_Gtid_Set:

               Auto_Position: 0

1 row in set (0.00 sec)

Master 上添加数据, 测试同步:

Master 创建一个库:



mysql> create database ktt;

Query OK, 1 row affected (0.01 sec)
Slave 查看状态:
mysql> show slave statusG

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

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 10.11.8.219

                  Master_User: repluser

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: master-bin.000002

          Read_Master_Log_Pos: 500

               Relay_Log_File: relay-log.000002

                Relay_Log_Pos: 375

        Relay_Master_Log_File: master-bin.000002

             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: 500

              Relay_Log_Space: 542

              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: 1

                  Master_UUID: 441052e5-28c9-11e6-9cd1-0800274f81c9

             Master_Info_File: /data/mysql/master.info

                    SQL_Delay: 0

          SQL_Remaining_Delay: NULL

      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

           Master_Retry_Count: 86400

                  Master_Bind:

      Last_IO_Error_Timestamp:

     Last_SQL_Error_Timestamp:

               Master_SSL_Crl:

           Master_SSL_Crlpath:

           Retrieved_Gtid_Set:

            Executed_Gtid_Set:

                Auto_Position: 0

1 row in set (0.00 sec)

 

mysql> show databases;

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

| Database           |

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

| information_schema |

| ktt                |

| mysql              |

| performance_schema |

| test               |

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

5 rows in set (0.01 sec)
补充: Slave 重启后可自动启动slave 进程是因为保存了相关的连接信息, 即以下两个文件
[root@keep2 mysql]# cat master.info

23

master-bin.000002

500

10.11.8.219

repluser

replpass

3306

60

0

 

 

 

 

 

0

1800.000

 

0

441052e5-28c9-11e6-9cd1-0800274f81c9

86400

 

 

0

[root@keep2 mysql]# cat relay-log.info

7

./relay-log.000004

284

master-bin.000002

500

0

0

1

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/48651.html

相关文章

  • MySQL 主从复制原理

    摘要:引言主从复制原理是相当基础的知识,很久没有接触过主从复制了,因为我这边负责的业务暂时没用使用主从复制。在与之间实现整个主从复制的过程是由三个线程参与完成的。来自帮助文档复制过程服务器上执行,开启主从复制开关。 引言 MySQL 主从复制原理是相当基础的知识,很久没有接触过 MySQL 主从复制了,因为我这边负责的业务暂时没用使用 MySQL 主从复制。既然有些忘记了,现在我重新复习记录...

    LinkedME2016 评论0 收藏0
  • MySQL5.7 主从复制配置

    摘要:每一个主从复制的连接,都有三个线程。上创建一个测试数据库四主从复制创建授权用户创建用户,指定该用户只能在主库上使用密码登录为用户赋予权限。 一、主从复制原理 MySQL 主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。每一个主从复制的连接,都有三个线程。拥有多个从库的主库为每一个连接到主库的从库创建一个 log du...

    wenhai.he 评论0 收藏0
  • MySQL5.7 主从复制配置

    摘要:每一个主从复制的连接,都有三个线程。上创建一个测试数据库四主从复制创建授权用户创建用户,指定该用户只能在主库上使用密码登录为用户赋予权限。 一、主从复制原理 MySQL 主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。每一个主从复制的连接,都有三个线程。拥有多个从库的主库为每一个连接到主库的从库创建一个 log du...

    rainyang 评论0 收藏0
  • MySQL主从复制原理探索

    摘要:主从复制的原理是什么,主库中保存更新事件日志的二进制文件。对于每一个即将发送给从库的事件,输出线程会将其锁住。在从库里,当复制开始的时候,从库就会创建两个线程进行处理从库线程。可以知道,对于每一个主从复制的连接,都有三个线程。 上一篇文章里面,讲到了遇到mysql主从延迟的坑,对于这次的坑多说两句,以前也看过这样的例子,也知道不能够写完之后马上更新,但是真正开发的时候还是没有注意到这一...

    Baaaan 评论0 收藏0
  • 简单五步教你搭建MySQL主从复制

    摘要:环境主机从机环境目标实现主机到从机基于的主从复制目前提供两种方式主从复制基于我们此篇就是基于的主从复制基于第步下载并分别安装到主机和从机,网上有很多例子。第步在主机和从机上分别拷贝配置文件到下。可以创建库或者表查看同步情况。 环境 主机:172.17.0.2从机:172.17.0.3环境:CentOS7MySQL:5.6.38目标:实现主机172.17.0.2到从机172.17.0.3...

    Vixb 评论0 收藏0
  • 简单五步教你搭建MySQL主从复制

    摘要:环境主机从机环境目标实现主机到从机基于的主从复制目前提供两种方式主从复制基于我们此篇就是基于的主从复制基于第步下载并分别安装到主机和从机,网上有很多例子。第步在主机和从机上分别拷贝配置文件到下。可以创建库或者表查看同步情况。 环境 主机:172.17.0.2从机:172.17.0.3环境:CentOS7MySQL:5.6.38目标:实现主机172.17.0.2到从机172.17.0.3...

    cyqian 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<