当前位置:Gxlcms > 数据库问题 > MySQL主从介绍、准备工作、准备工作、配置从、测试主从同步

MySQL主从介绍、准备工作、准备工作、配置从、测试主从同步

时间:2021-07-01 10:21:17 帮助过:17人阅读

17.1 MySQL主从介绍
  • MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步;
  • MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
  • 主从过程大致有3个步骤
    • 主将更改操作记录到binlog里
    • 从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里
    • 从根据relaylog里面的sql语句按顺序执行
  • 主上有一个log dump线程,用来和从的I/O线程传递binlong
  • 从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个sql线程用来把relaylog里面的sql语句落地
    MySQL主从原理图:
    技术分享图片

17.2 准备工作

  • 安装mysql

备注:

  1. <code>#设置开机启动
  2. [root@taoyun ~]# chkconfig mysqld on
  3. </code>

请查阅之前的文章:http://blog.51cto.com/3622288/2056837 12.2小节

17.3 配置主

  • 修改my.cnf
  1. <code>[root@taoyun ~]# vi /etc/my.cnf
  2. #增加server-id=130和log_bin=taoyuan
  3. socket=/tmp/mysql.sock #如下增加
  4. server-id=12 #可以自定义,如设定为IP地址192.168.0.12 中的12
  5. log_bin=taoyuan
  6. </code>
  • 修改完配置文件后,启动或重启mysqld服务
  1. <code>[root@taoyun ~]# /etc/init.d/mysqld restart;
  2. #查看文件
  3. [root@taoyun ~]# cd /data/mysql/
  4. [root@taoyun mysql]# ls -lt
  5. -rw-rw---- 1 mysql mysql 34 1月 23 16:57 taoyuan.index
  6. -rw-rw---- 1 mysql mysql 120 1月 23 16:57 taoyuan.000002
  7. -rw-rw---- 1 mysql mysql 143 1月 23 16:57 taoyuan.000001
  8. #上述文件,必须有,不然主从无法完成</code>
  • 把mysql可备份并恢复成taoyuan库,作为测试数据
    • mysqldump -uroot mysql > /tmp/mysql.sql
    • mysql -uroot -e "create database taoyuan"
    • mysql -uroot taoyuan < /tmp/mysql.sql
  • 创建用作同步数据的用户
  1. <code>#创建用户
  2. mysql> grant replication slave on *.* to ‘repl‘@‘192.168.0.10‘ identified by ‘taoyuan‘;
  3. Query OK, 0 rows affected (0.00 sec)
  4. #锁表,防止再次写入数据
  5. mysql> flush tables with read lock;
  6. Query OK, 0 rows affected (0.03 sec)
  7. #记住位置
  8. mysql> show master status;
  9. +----------------+----------+--------------+------------------+-------------------+
  10. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
  11. +----------------+----------+--------------+------------------+-------------------+
  12. | taoyuan.000002 | 660574 | | | |
  13. +----------------+----------+--------------+------------------+-------------------+
  14. 1 row in set (0.00 sec)
  15. </code>

17.4 配置从

  • 修改配置文件
  1. <code>[root@taoyun ~]# vi /etc/my.cnf
  2. #增加server-id 跟主不一样 可以设置成10
  3. #log_bin 不需要设置,主才需要生成二进制文件,从不用
  4. #重启服务
  5. [root@taoyun ~]# /etc/init.d/mysqld restart</code>
  • 数据同步
  1. <code>#采用复制虚拟机操作,如果没有可以用如下的命令进行同步
  2. scp 192.168.0.12:/tmp/*.sql /tmp/
  3. #恢复库
  4. mysql> create database taoyuan;
  5. Query OK, 1 row affected (0.00 sec)
  6. mysql> create database blog;
  7. Query OK, 1 row affected (0.01 sec)
  8. </code>
  • 实现主从
  1. <code>mysql> stop slave;
  2. Query OK, 0 rows affected, 1 warning (0.00 sec)
  3. mysql> change master to master_host=‘192.168.0.12‘, master_user=‘repl‘, master_password=‘taoyuan‘, master_loog_file=‘taoyuan.000002‘, master_log_pos=660574;
  4. Query OK, 0 rows affected, 2 warnings (0.04 sec)
  5. #填写show master status; 显示的信息
  6. mysql> start slave;
  7. Query OK, 0 rows affected (0.01 sec)
  8. </code>
  • 查看主从是否配置成功
  1. <code>mysql> show slave status\G
  2. #还需到主上执行 unlock tables;</code>

17.5 测试主从同步

  • 主上 mysql -uroot taoyuan
  • select count(*) from db;
  • truncate table db;
  • 到从上mysql -uroot aming;
  • select count(*) from db;
  • 主上继续drop table db;
  • 从上查看db表

  • 几个配置参数
    • 主服务器上
    • binlog-do-db= //仅同步指定的库
    • binlog-ignore-db= //忽略指定库
    • 从服务器上
    • replicate_do_db=
    • replicate_ignore_db=
    • replicate_do_table=
    • replicate_ignore_table=
    • 如下两个常用
    • replicate_wild_do_table= //如taoyuan.%,支持通配符%
    • replicate_wild_ignore_table=

mysql主从配置uuid相同错误解决

配置mysql主从时,由于是拷贝的mysql目录,导致主从mysql uuid相同, Slave_IO无法启动,报错信息如下:

The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
解决办法:修改mysql data 目录下auto.cnf 文件中uuid的值,使两台mysql不同即可,修改后重启mysql服务。

MySQL主从介绍、准备工作、准备工作、配置从、测试主从同步

标签:导致   src   测试数据   ted   启动   lock   sele   生成   ges   

人气教程排行