一. 配置MySQL数据库主从同步

系统环境:Linux

MySQL版本:5.7    注意:主从数据库MySQL版本务必保持一致

具体概括为以下操作步骤

1)开启master的二进制日志

2)开启slave的二进制日志

3)将slave指向master

4)开始复制

1.1 开启master二进制日志

1)编辑mysql配置文件

vi /etc/my.cnf

2)添加二进制日志配置,开启二进制(mysql-bin只是二进制日志名称,可以自行指定)

server-id=1             #id是一定要指定的,是唯一的标识(master数据库要比slave数据库的id优先级高才行)
log-bin=mysql-bin       #开启二进制日志

3)授权

登录数据库,需要给slave数据库配置一个用户/密码的权限

允许某个ip地址的某个用户以某个密码对当前数据库的所有库和表进行复制操作

mysql> grant replication slave on *.* to 'root'@'slave数据库ip' identified by '密码';

PS:如果在重置密码时提示 如下错误:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

主要原因是当前设置的密码不符合规则,设置为8位长度并包含大小写字母及特殊符号即可,或者修改密码规则,具体自行Google

配置之后需要刷新权限

mysql> flush privileges;

上面修改配置文件需重启服务

service mysqld restart

4)查看master的状态

mysql> show master status;

分库分表教程(Sharding-JDBC) -06

file:是日志文件名称

position:日志所在位置

1.2 开启slave的二进制日志

登录slave服务器

1)配置my.cnf配置文件

vi /etc/my.cnf

2)添加slave二进制日志配置,开启二进制(mysql-bin只是二进制日志名称,可以自行指定)

server-id=2
log-bin=mysql-bin

注意:每一台指定唯一的一个server-id标识

修改完配置服务需重启服务

service mysqld restart

3)配置slave指向master

mysql> change master to
    -> master_host='master数据库ip',
    -> master_user='master授权账号',
    -> master_password='授权密码',
    -> master_log_file='master日志文件(例:mysql-bin.000001)',
    -> master_log_pos=master日志所在位置(例:1250);

master的日志文件名称可以在master数据库使用show master status;查看到

1.3 开启主从复制

 在slave服务器上执行

mysql> start slave;

查看slave运行状态

mysql> show slave status\G;

可看到如下内容

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 106.53.73.200
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 154
               Relay_Log_File: VM_0_16_centos-relay-bin.000002
                Relay_Log_Pos: 320
        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: 154
              Relay_Log_Space: 536
              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: f8100725-c3e5-11e9-ae45-525400da2f1f
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           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
         Replicate_Rewrite_DB:
                 Channel_Name:
           Master_TLS_Version:
1 row in set (0.00 sec)

ERROR:
No query specified

能查看到这两个为yes则表示成功

Slave_IO_Running: Yes #表示slave的日志读取线程开启 

Slave_SQL_Running: Yes #表示SQL执行线程开启

如果出现不同步情况参考网址:https://blog.csdn.net/heng_ji/article/details/51013710

1.4 配置需要同步的数据库以及不需要同步的数据库

1)停止Master服务

service mysqld stop

2)修改配置文件

vim /etc/my.cnf

增加如下内容

binlog_do_db=myslave # 如果需要同时同步多个数据库,请另起一行设置binlog_do_db=需要同步的数据库名称 binlog_ignore_db=mysql # 不想同步的数据库

 

 

相关文章:

  • 2021-10-22
  • 2021-12-11
  • 2021-11-02
  • 2021-10-16
  • 2022-12-23
  • 2022-12-23
  • 2021-07-15
猜你喜欢
  • 2021-10-14
  • 2021-09-14
  • 2021-05-16
  • 2022-12-23
  • 2022-12-23
  • 2021-10-12
  • 2021-09-28
相关资源
相似解决方案