(十三)MySQL主从复制

(1)工作原理

(2)主从实现

1) 环境介绍

/etc/redhat-release 
CentOS Linux release 7.3.1611 (Core)

MySQL版本:5.7

mysql> select version();
+------------+
| version()  |
+------------+
| 5.7.22-log |
+------------+

2) master端配置

  • 准备数据

    mysql>  mysql -uroot -pRedhat@123 -e 'create database testdb;
    mysql>  create table testdb.t1(id int,name varchar(50));
    mysql>  insert into testdb.t1 values(1,'jack');
    mysql>  insert into testdb.t1 values(2,'alex');
  • 开启二进制日志和配置server-id

    #vim /etc/my.cnf
    log-bin
    server-id=1
  • 重启服务器

    #systemctl restart mysqld
  • 创建授权账号

    mysql> grant replication slave,replication client on *.* to 'rep'@'192.168.111.%' identified by 'Reprep@123';
    mysql> flush privileges;
  • 备份数据库

    mysqldump -uroot -pRedhat@123 -A -R  --single-transaction --master-data=1 --flush-logs >$(date +%F)-mysql-all.sql
  • 把备份的数据库文件拷贝到从库主机上

    scp -r 2018-04-26-mysql-all.sql [email protected]:/root
  • 在完整备份后在创建一些数据

    mysql> insert into testdb.t1 values(3,'www');
    mysql> insert into testdb.t1 values(4,'yyyy');

    3)slave端配置

  • 验证主库创建的账号是否能够正常登陆,也验证是否有防火墙问题

    # mysql -h192.168.111.151 -urep -p'Reprep@123'
  • 配置从库的server-id和设置从库只读
    注意应用程序连接从库的权限不要给所有权限,只让从库只读

    #vim /etc/my.cnf
    server-id=2
    read-only 
  • 重启数据库

    #systemctl restart mysqld
  • 把备份导入到从库上:强烈建议使用source方法导入sql备份到从库中
    不建议使用mysql -uroot -pRedhat@123 </root/2018-04-26-mysql-all.sql,不然change master需要指定pos文件和位置点

    mysql>source /root/2018-04-26-mysql-all.sql   
  • 连接主库

    mysql> change master to 
    -> master_host='192.168.111.151',               \\生成环境建议使用主机名,不建议使用ip地址
    -> master_user='rep',
    -> master_password='Reprep@123';
  • 开启复制和验证状态

    mysql> start slave;
    mysql> show slave status\G
      Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
  • 验证数据

    mysql> select * from testdb.t1;
    +------+------+
    | id   | name |
    +------+------+
    |    1 | jack |
    |    2 | alex |
    |    3 | www  |
    |    4 | yyyy |
    +------+------+

猜你喜欢

转载自www.cnblogs.com/lovelinux199075/p/8955843.html