Mysql 主从复制

环境

  • 系统:kalilinux
  • Mysql:mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
  • Mysql安装位置:
root@kali:/data# ls /usr/local/mysql/
bin  COPYING  data  docs  include  lib  man  my.cnf  my-new.cnf  mysql-test  README  scripts  share  sql-bench  support-files
root@kali:/data# ls /data/mysql_3306/
data  log  my.cnf
root@kali:/data# ls /data/mysql_3307
data  log  my.cnf
  • master 配置文件
root@kali:/data# cat  mysql_3306/my.cnf 
[client]
user=root
port=3306  
socket=/tmp/mysql.sock  
 
[mysqld] 
user=mysql  
basedir = /usr/local/mysql  
datadir=/data/mysql_3306/data
pid-file=/data/mysql_3306/data/mysql_3306.pid
port=3306  
server_id=3306  
socket=/tmp/mysql_3306.sock  
character_set_server = utf8
skip_name_resolve = 1
max_connections = 800
max_connect_errors = 1000
max_allowed_packet = 16777216  
log-error = /data/mysql_3306/log/error.log  
binlog_format = mixed  
expire_logs_days = 30
log-bin = /data/mysql_3306/log/mysql-bin.log  
log-bin-index = /data/mysql_3306/log/mysql-bin.index

server_id启用二进制日志文件
log-bin服务器唯一ID

  • slave 配置文件
root@kali:/data# cat  mysql_3307/my.cnf 
[client]
root=root
port=3307
socket=/tmp/mysql.sock  
 
[mysqld] 
user=mysql  
basedir = /usr/local/mysql  
datadir=/data/mysql_3307/data
pid-file=/data/mysql_3307/data/mysql_3307.pid
port=3307  
server_id=3307  
socket=/tmp/mysql_3307.sock  
character_set_server = utf8
skip_name_resolve = 1
max_connections = 800
max_connect_errors = 1000
max_allowed_packet = 16777216
log-error = /data/mysql_3307/log/error.log  
binlog_format = mixed  
expire_logs_days = 30
log-bin = /data/mysql_3307/log/mysql-bin.log  
log-bin-index = /data/mysql_3307/log/mysql-bin.index
read_only=1

server_id启用二进制日志文件
log-bin服务器唯一ID
read_only

连接master

mysql -h 127.0.0.1 -P3306

1、创建一个用户’repl’,并且允许其他服务器可以通过该用户远程访问master,通过该用户去读取二进制数据,实现数据同步

Create user repl identified by 'repl';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl';

2、查看master的状态信息

show master status;

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 |      120 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

mysql-bin.000004 后面会用到。

连接slaver

mysql -h 127.0.0.1 -P3307

1、通过如下命令建立同步连接

change master to master_host='127.0.0.1' , master_port=3306,master_user='repl',master_password='repl',master_log_file='mysql-bin.000004',master_log_pos=0;

master_log_file是master中查看的

2、启动slaver

start selver;

3、查看slave服务器状态

show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 127.0.0.1
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 478
               Relay_Log_File: mysql_3307-relay-bin.000002
                Relay_Log_Pos: 641
        Relay_Master_Log_File: mysql-bin.000004
             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: 478
              Relay_Log_Space: 819
              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: 3306
                  Master_UUID: 17e272e2-486c-11e8-b5c6-288023c03806
             Master_Info_File: /data/mysql_3307/data/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

Slave_IO_Running: Yes , Slave_SQL_Running: Yes ,表示成功

测试

在master执行:

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.02 sec)

MySQL [(none)]> create database master;
Query OK, 1 row affected (0.02 sec)

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| master             |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.01 sec)

在slaver执行:

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.01 sec)

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| master             |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)
posted @ 2018-04-27 15:52  懒企鹅  阅读(179)  评论(0编辑  收藏  举报