部署Mysql的主从同步
实现数据从一台数据库(master)复制到一台或者多台数据库(slave)
Replication 的原理:master 将数据库的改变写入二进制日志,slave 同步这些二进制日志,并根据这些二进制日志进行数据操作
复制有 3 个步骤:
(1) master 将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events)
(2) slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)
(3) slave 重做中继日志中的事件,修改 salve 上的数据。
首先,准备两台数据库,一主(master),一备(slave)
主IP:192.168.44.137
从IP:192.168.44.131
创建需要同步的库
配置主数据库
create database fpx;
use fpx;
create table A1(id int,name varchar(20));
然后停止服务
修改配置文件/etc/my.cnf
(插入以下内容)
log-bin=mysql-bin-master #启用二进制日志
server-id=1 #本机数据库 ID 标示
binlog-do-db=fpx #可以被从服务器复制的库, 二进制需要同步的数据库名
binlog-ignore-db=mysql #不可以被从服务器复制的库
启动数据库服务
授权,进到数据库中(不要直接复制下面的代码,少了*.*)
grant replication slave on . to slave@192.168.44.131 identified by “123456”;
刷新权限
flush privileges;
查看状态信息
show master status;
(可以看到显示二进制文件,同步的库,及不同步的库)
查看系统中二进制文件
ls /var/lib/mysql
show binlog events\G
配置从数据库
从主数据库导出fpx数据库
mysqldump -uroot -p123456 fpx > /fpx/fpx.sql
传到从数据库
scp /fpx/fpx.sql root@192.168.44.131:/fpx/
在从服务器上测试slave账号是否可用(要注意防火墙或iptables -F)
mysql -u slave -p123456 -h 192.168.44.137
导入数据库
mysql> create database fpx;
mysql -uroot -p123456 fpx</fpx/fpx.sql
导完停止数据库服务
编辑/etc/my.cnf (添加一个行)
server-id= 2(id不能重复)
启动服务
进入数据库
指向主数据库
mysql> stop slave;
mysql>change master to master_host=‘192.168.44.137’,master_user=‘slave’,master_password=‘123456’;
mysql>start slave;
查看连接状态
show slave status\G
主数据库上查看
show processlist \G
测试
主数据库上添加数据
use fpx;
insert into A1 values(1,‘fpx’);
select * from A1;
查看从服务器,也有数据了