MySQL5.7.17 主从同步配置

1.1 关闭防火墙
Service iptables status // 查看防火墙状态
Service iptables stop // 防火墙启动状态,则运行此命令停止防火墙服务
1.2 禁掉 selinux
/usr/sbin/sestatus -v // 查看 selinux 状态
SELinux status:                 disabled// 关闭
SELinux status:                     enabled// 启动
vim /etc/selinux/config 需要重启机器
#SELINUX=enforcing
#SELINUXTYPE=targeted
SELINUX=disabled
setenforce 0 临时关闭,不需要重启机器




主从复制的原理:
 
分为同步复制和异步复制,实际复制架构中大部分为异步复制。 复制的基本过程如下:
1).Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
2).Master接收到来自Slave的IO进程的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave 的IO进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置;
3).Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”;
4).Slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。
1.主服务器配置
vim /etc/my.cnf
#--同步配置begin
#若涉及及同步函数或者存储过程需要配置,否则主备会产生异常不能同步
log_bin_trust_function_creators=TRUE
#需要备份的数据库名,多个库以逗号分
binlog_do_db =ashop,bookmanager,zook
#不需要备份的数据库名  多个库以逗号分
binlog-ignore-db=mysql,sys,performance_schema,information_schema
#表示是本机的序号为1,一般来讲就是master的意思
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
log-bin=/u01/mysql/mysql-bin
sync_binlog=1
log-slave-updates=1
server-id=1
innodb_flush_log_at_trx_commit=1
#0:如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作(执行是由mysql的master thread线程来执行的。
#主线程中每秒会将重做日志缓冲写入磁盘的重做日志文件(REDO LOG)中。不论事务是否已经提交)默认的日志文件是ib_logfile0,ib_logfile1
#1:当设为默认值1的时候,每次提交事务的时候,都会将log buffer刷写到日志。
#2:如果设为2,每次提交事务都会写日志,但并不会执行刷的操作。每秒定时会刷到日志文件。要注意的是,并不能保证100%每秒一定都会刷到磁盘,这
#要取决于进程的调度。
#每次事务提交的时候将数据写入事务日志,而这里的写入仅是调用了文件系统的写入操作,而文件系统是有 缓存的,所以这个写入并不能保证数据已经
#写入到物理磁盘
#默认值1是为了保证完整的ACID。当然,你可以将这个配置项设为1以外的值来换取更高的性能,但是在系统崩溃的时候,你将会丢失1秒的数据。
#设为0的话,mysqld进程崩溃的时候,就会丢失最后1秒的事务。设为2,只有在操作系统崩溃或者断电的时候才会丢失最后1秒的数据。InnoDB在做恢复的
#时候会忽略这个值。
#总结
#设为1当然是最安全的,但性能页是最差的(相对其他两个参数而言,但不是不能接受)。如果对数据一致性和完整性要求不高,完全可以设为2,如果>只最求性能,例如高并发写的日志服务器,设为0来获得更高性能
#--同步配置end
2.重启mysql
mysql> grant replication slave on *.* to slaveusr@ 192.168 . 19.142  identified by  ' slaveusr ' ;
mysql> show master status;
+------------------+----------+------------------------+-------------------------------------------------+-------------------+
| File             | Position | Binlog_Do_DB           | Binlog_Ignore_DB                                | Executed_Gtid_Set |
+------------------+----------+------------------------+-------------------------------------------------+-------------------+
| mysql-bin.000004 |      154 | ashop,bookmanager,zook | mysql,sys,performance_schema,information_schema |                   |
+------------------+----------+------------------------+-------------------------------------------------+-------------------+

  1. 锁定主数据库 DDL 操作
mysql> flush tables with read lock;
Master上备份一份完整的数据:
mysqldump -uroot -proot123 -h39.108.0.229 --master-data=2 --single-transaction -R --triggers -A > /u01/soft/all.sql;
#解释
--master-data=2代表备份时刻记录master的Binlog位置和Position
--single-transaction意思是获取一致性快照
-R意思是备份存储过程和函数
--triggres的意思是备份触发器
-A代表备份所有的库

8、在node01(ccy002)Master上创建复制用户repl(密码111111),并授权访问所有主机:
1
2
mysql> grant replication slave on *.* to 'repl'@'%' identified by '111111'; 
mysql> flush privileges; #刷新缓存


2.副服务器配置
vim /etc/my.cnf

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLE
server-id =3
replicate-do-db = sbfxd
master-info-file = master.info
relay-log = relay-relay-bin
relay-log-index = relay-relay-bin.index
relay-log-info-file=relay-relay-log.info

3。重启mysql
mysql>  stop slave;
mysql> change master to master_host='192.168.19.139',master_port= 3306,master_log_file=' mysqlbin.000004 ' ,master_log_pos= 154 ,master_bind='',master_user=' slaveusr ',master_password=' slaveusr ';
mysql> change master to master_user='root',master_password='root123',master_host='39.108.0.229',master_port=3306,master_log_file='mysql-bin.000002',master_log_pos=154;
mysql> start slave;
(4)显示副服务器的状态

mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 39.108.0.229
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000007
          Read_Master_Log_Pos: 2230
               Relay_Log_File: VM_10_35_centos-relay-bin.000002
                Relay_Log_Pos: 2396
        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: 2230
              Relay_Log_Space: 2613
              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: 4c24c6df-85a2-11e7-a2dd-00163e06a33c
             Master_Info_File: /u01/mysql/data/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:

(5)登陆slave
导入all.sql
mysql -uroot -p111111 -hccy002 < /u01/soft/all.sql
mysql -uroot -p111111 -hccy003 < /u01/soft/all.sql

2.6 解锁主库 ddl 操作
mysql> unlock tables;

访问: http://39.108.0.229/ 则会在bookmanager插入一条记录
ccy001
mysql> use bookmanager;
mysql> select count(1) from t_log;
+----------+
| count(1) |
+----------+
|     7211 |
+----------+
ccy003
mysql> use bookmanager;
mysql> select count(1) from t_log;
+----------+
| count(1) |
+----------+
|     7211 |
+----------+
日志表数量相同则表示同步成功


















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值