当前位置: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

备注:

#设置开机启动
[root@taoyun ~]# chkconfig mysqld on

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

17.3 配置主

  • 修改my.cnf
[root@taoyun ~]# vi /etc/my.cnf

#增加server-id=130和log_bin=taoyuan
socket=/tmp/mysql.sock #如下增加
server-id=12 #可以自定义,如设定为IP地址192.168.0.12 中的12
log_bin=taoyuan
  • 修改完配置文件后,启动或重启mysqld服务
[root@taoyun ~]# /etc/init.d/mysqld restart;

#查看文件
[root@taoyun ~]# cd /data/mysql/

[root@taoyun mysql]# ls -lt
-rw-rw----  1 mysql mysql       34 1月  23 16:57 taoyuan.index
-rw-rw----  1 mysql mysql      120 1月  23 16:57 taoyuan.000002
-rw-rw----  1 mysql mysql      143 1月  23 16:57 taoyuan.000001
#上述文件,必须有,不然主从无法完成
  • 把mysql可备份并恢复成taoyuan库,作为测试数据
    • mysqldump -uroot mysql > /tmp/mysql.sql
    • mysql -uroot -e "create database taoyuan"
    • mysql -uroot taoyuan < /tmp/mysql.sql
  • 创建用作同步数据的用户
#创建用户
mysql> grant replication slave on *.* to ‘repl‘@‘192.168.0.10‘ identified by ‘taoyuan‘;
Query OK, 0 rows affected (0.00 sec)

#锁表,防止再次写入数据
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.03 sec)

#记住位置
mysql> show master status;
+----------------+----------+--------------+------------------+-------------------+
| File           | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------+----------+--------------+------------------+-------------------+
| taoyuan.000002 |   660574 |              |                  |                   |
+----------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

17.4 配置从

  • 修改配置文件
[root@taoyun ~]# vi /etc/my.cnf
#增加server-id 跟主不一样 可以设置成10
#log_bin 不需要设置,主才需要生成二进制文件,从不用

#重启服务
[root@taoyun ~]# /etc/init.d/mysqld restart
  • 数据同步
#采用复制虚拟机操作,如果没有可以用如下的命令进行同步
scp 192.168.0.12:/tmp/*.sql /tmp/

#恢复库
mysql> create database taoyuan;
Query OK, 1 row affected (0.00 sec)

mysql> create database blog;
Query OK, 1 row affected (0.01 sec)
  • 实现主从
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

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;
Query OK, 0 rows affected, 2 warnings (0.04 sec)
#填写show master status; 显示的信息

mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
  • 查看主从是否配置成功
mysql> show slave status\G

#还需到主上执行 unlock tables;

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   

人气教程排行