MySQL高级--主从复制
- 主从复制的基本原理:
- slave会从master读取binlog来进行数据同步
- 三步骤+原理图:
-
MySQL复制过程分成三步:
-
master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;
-
slave将master的binary log events拷贝到它的中继日志(relay log) ;
-
slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是 异步的且串行化的
-
-
- 复制的基本原则
- 每个slave只有一个master
- 每个slave只能有一一个唯一的服务器ID+日复制的基本原则
- 每个master可以有多个salve
- 复制的最大问题
- 延时
- 一主一从常见配置
- mysql版本一致且后台以服务运行
- 主机从机能够相互ping 通
- 主机ip:172.29.92.68
- 从机ip:192.168.56.130
-
- 主从都配置在【mysqld】节点下,都是小写
- 主机修改my.ini配置文件
- 主服务器唯一ID(必选):
- server-id=1
- 启动二进制日志(必选):
- log-bin=自己的本地的路径/mysqlbin
- log-bin=D:/qq/mysql/mysql-5.5.28-win32/data/mysqlbin
- 启用错误日志(可选):
- log-err=自己的本地路径/mysqlerr
- log-err=D:/qq/mysql/mysql-5.5.28-win32/data/mysqlerr
- 根目录(可选):
- basedir="自己本地路径"
- basedir="D:/qq/mysql/mysql-5.5.28-win32/"
- 临时目录(可选):
- tmpdir="自己的本地路径"
- tmpdir="D:/qq/mysql/mysql-5.5.28-win32/"
- 数据目录(可选):
- datadir="自己的本地路径/Data/"
- datadir="D:/qq/mysql/mysql-5.5.28-win32/Data/"
- read-only=0
- 主机,读写都可以
- 设置不要复制的数据库(可选):
- binlog-ignore-db=mysql
- 设置需要复制的数据库名字(可选):
- binlog-do-db=需要复制的数据库名字
- 如图所示:
- 主服务器唯一ID(必选):
- 从机修改my.cnf配置文件
- 从机服务器唯一ID(必选):
- 打开配置文件:vim /etc/my.cnf
- 注释:server-id =1
- 打开:server-id =2
-
- 启动二进制日志(可选)
- 从机服务器唯一ID(必选):
- 因修改过配置文件,请主机+从机都重新启动mysql服务
- 主机从机都关闭防火墙
- window 手动关闭防火墙
- 关闭虚拟机linux防火墙:service iptables stop
- window 手动关闭防火墙
- 在windows 主机上建立账户并授权slave
- grant replication slave on *.* to 'slave001'@'%' identified by '123456';
- grant replication slave on *.* to '用户名'@'从机器数据库IP' identified by '123456';
- %:代表所有的远程用户
-
刷新一下:flush privileges;
-
-
查询master的状态
-
show master status;
-
记录下File和Position的值(告诉从机开始复制的位置--那个文件的那个位置)
- 执行完此步骤后不要在操作主服务器了mysql,防止主服务器状态值变化
-
- 在linux主机上配置需要复制的主机
- 在从机中配置主机命令:
-
CHANGE MASTER TO MASTER_HOST='172.29.95.254'
MASTER_USER='zhangsan',
MASTER PASSWORD='123456',
MASTER_LOG_FILE='mysqlbin.具体数字’, MASTER_LOG_POS=具体值; - change master to master_host='172.29.92.68',
- master_user='slave001',
- master_password='123456',
- master_log_file='mysqlbin.000007',master_log_pos=107;
-
-
启动服务器的复制功能:
-
start slave;
-
-
show slave status\G
-
下面两个参数都是yes,则说明主从配置成功
-
Slave_Io_Running:Yes
-
Salve_SQL_Running:Yes
-
-
- 在从机中配置主机命令:
- 主机新建库,新建表,insert 记录,主从复制
-
如何停止从服务复制功能:stop,slave;
-
- mysql版本一致且后台以服务运行