mysql复制

2013-06-21 01:10  986人阅读  评论 (0)

在主库和备库创建复制账号

grant replication slave, replication client on *.* to repl@'%' identified by '123456';

配置Master的log_bin

# 二进制日志名称
log_bin = /usr/local/mysql/data/binlog/mysql-bin
# 服务器id
server_id = 100
# 二进制日志保留多少天
expire_logs_days = 7

查看Master 状态

mysql> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.000005
         Position: 120
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

配置Slave log_bin

# 二进制日志名称
log_bin = /usr/local/mysql/data/binlog/mysql-bin
# 服务器id
server_id = 200
# 中继日志位置
relay_log = /usr/local/mysql/data/mysql-relay-bin
# 将重放事件也记录到本地二进制日志中
log_slave_updates = 1
# 从库只读
#read_only = 1
# 跳过从库自动启动复制
skip_slave_start = 1
# 从库同步超时重连时间
slave_net_timeout = 60

Slave设置Master地址参数 提示:MASTER_LOG_FILE,MASTER_LOG_POS根据master状态设置

CHANGE MASTER TO MASTER_HOST = '193.168.1.110',
MASTER_USER = 'repl',
MASTER_PASSWORD = '123456',
Replicate_Do_DB = 'blog',
MASTER_LOG_FILE = 'mysql-bin.000005',
MASTER_LOG_POS = 120;

Slave开始复制

start slave;

查看Slave状态

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event     # Slave IO线程状态
                  Master_Host: 193.168.1.110                        # Master 地址
                  Master_User: repl                                 # Master 复制账号
                  Master_Port: 3306                                 # Master 端口
                Connect_Retry: 60                                   # 重连间隔时间
              Master_Log_File: mysql-bin.000005                     # IO线程正在读取的Master二进制日志的名称
          Read_Master_Log_Pos: 867                                  # 本机IO线程读取主服务器二进制日志位置
               Relay_Log_File: mysql-relay-bin.000002               # SQL线程当前读取执行的中继日志文件的名称
                Relay_Log_Pos: 1030                                 # SQL线程读取执行中继日志的位置
        Relay_Master_Log_File: mysql-bin.000005                     # SQL线程执行大部分近期事件的主服务器二进制日志文件的名称
             Slave_IO_Running: Yes                                  # I/O线程是否启动并成功连接到主服务器上
            Slave_SQL_Running: Yes                                  # SQL线程是否启动
              Replicate_Do_DB:                                      # 复制的数据库列表,逗号隔开
          Replicate_Ignore_DB:                                      # 不复制的数据库列表
           Replicate_Do_Table:                                      # 复制的表的列表
       Replicate_Ignore_Table:                                      # 不复制的表的列表
      Replicate_Wild_Do_Table:                                      # 复制的表的列波,支持like条件通配符
  Replicate_Wild_Ignore_Table:                                      # 不复制的表的列波,支持like条件通配符
                   Last_Errno: 0                                    # 最后错误编号
                   Last_Error:                                      # 最后错误提示
                 Skip_Counter: 0                                    # 最近被使用的用于SQL_SLAVE_SKIP_COUNTER的值
          Exec_Master_Log_Pos: 867                                  # SQL线程执行来自master的二进制日志最后一个事件位置
              Relay_Log_Space: 1203                                 # 所有原有的中继日志结合起来的总大小
              Until_Condition: None                                 # 复制until条件,在stop slave,start slave(不带until)或server重启的时候会自动重置
               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: 0                                    # 主备延迟时间,单位秒
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0                                    # 最后IO线程错误编号
                Last_IO_Error:                                      # 最后IO线程错误提示
               Last_SQL_Errno: 0                                    # 最后SQL线程错误编号
               Last_SQL_Error:                                      # 最后SQL线程错误提示
  Replicate_Ignore_Server_Ids:                                      # 忽略复制服务器ID
             Master_Server_Id: 100                                  # Master服务器ID
                  Master_UUID: 36167c6c-d911-11e2-84fc-0800275fc1cb # Master服务器UUID
             Master_Info_File: /usr/local/mysql/data/master.info    # Master服务器信息
                    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 # Slave SQL 执行状态提示
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp:                                      # 最后IO线程错误时间
     Last_SQL_Error_Timestamp:                                      # 最后SQL执行错误时间
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
1 row in set (0.00 sec)

字段太多,整理了一下

Auto_Position                   : 0
Connect_Retry                   : 60                                    # 重连间隔时间
Exec_Master_Log_Pos             : 867                                   # SQL线程执行来自master的二进制日志最后一个事件位置
Executed_Gtid_Set               :
Last_Errno                      : 0                                     # 最后错误编号
Last_Error                      :                                       # 最后错误提示
Last_IO_Errno                   : 0                                     # 最后IO线程错误编号
Last_IO_Error                   :                                       # 最后IO线程错误提示
Last_IO_Error_Timestamp         :                                       # 最后IO线程错误时间
Last_SQL_Errno                  : 0                                     # 最后SQL线程错误编号
Last_SQL_Error                  :                                       # 最后SQL线程错误提示
Last_SQL_Error_Timestamp        :                                       # 最后SQL执行错误时间
Master_Bind                     :
Master_Host                     : 193.168.1.110                         # Master 地址
Master_Info_File                : /usr/local/mysql/data/master.info     # Master服务器信息
Master_Log_File                 : mysql-bin.000005                      # IO线程正在读取的Master二进制日志的名称
Master_Port                     : 3306                                  # Master 端口
Master_Retry_Count              : 86400
Master_SSL_Allowed              : No                                    # SSL
Master_SSL_CA_File              :
Master_SSL_CA_Path              :
Master_SSL_Cert                 :
Master_SSL_Cipher               :
Master_SSL_Crl                  :
Master_SSL_Crlpath              :
Master_SSL_Key                  :
Master_SSL_Verify_Server_Cert   : No
Master_Server_Id                : 100                                   # Master服务器ID
Master_UUID                     : 36167c6c-d911-11e2-84fc-0800275fc1cb  # Master服务器UUID
Master_User                     : repl                                  # Master 复制账号
Read_Master_Log_Pos             : 867                                   # 本机IO线程读取主服务器二进制日志位置
Relay_Log_File                  : mysql-relay-bin.000002                # SQL线程当前读取执行的中继日志文件的名称
Relay_Log_Pos                   : 1030                                  # SQL线程读取执行中继日志的位置
Relay_Log_Space                 : 1203                                  # 所有原有的中继日志结合起来的总大小
Relay_Master_Log_File           : mysql-bin.000005                      # SQL线程执行大部分近期事件的主服务器二进制日志文件的名称
Replicate_Do_DB                 :                                       # 复制的数据库列表,逗号隔开
Replicate_Do_Table              :                                       # 复制的表的列表
Replicate_Ignore_DB             :                                       # 不复制的数据库列表
Replicate_Ignore_Server_Ids     :                                       # 忽略复制服务器ID
Replicate_Ignore_Table          :                                       # 不复制的表的列表
Replicate_Wild_Do_Table         :                                       # 复制的表的列波,支持like条件通配符
Replicate_Wild_Ignore_Table     :                                       # 不复制的表的列波,支持like条件通配符
Retrieved_Gtid_Set              :
SQL_Delay                       : 0
SQL_Remaining_Delay             : NULL
Seconds_Behind_Master           : 0                                     # 主备延迟时间,单位秒
Skip_Counter                    : 0                                     # 最近被使用的用于SQL_SLAVE_SKIP_COUNTER的值
Slave_IO_Running                : Yes                                   # I/O线程是否启动并成功连接到主服务器上
Slave_IO_State                  : Waiting for master to send event      # Slave IO线程状态
Slave_SQL_Running               : Yes                                   # SQL线程是否启动
Slave_SQL_Running_State         : Slave has read all relay log; waiting for the slave I/O thread to update it        # Slave SQL 执行状态提示
Until_Condition                 : None                                  # 复制until条件,在stop slave,start slave(不带until)或server重启的时候会自动重置
Until_Log_File                  :                                       # 复制停止的文件名
Until_Log_Pos                   : 0                                     # 复制停止的文件位置

查看复制线程运行情况

SHOW PROCESSLIST \G

停止Slave复制

stop  slave;