赞
踩
MySql的主从复制是基于MySql数据库自带的二进制日志功能(binary log),是一个异步的复制过程。
一台或多台数据库从库(slave)从一台MySql主库(master)进行二进制日志的复制,然后再进行日志的解析并应用到自身,最终实现从库的数据库和主库的数据保持一致。
MySql主从复制的过程分三步:
提前准备好两台服务器,分别安装MySql并启动服务成功
e.g.:
可以使用两台虚拟机或云服务器,之后用FinalShell之类的连接工具进行控制。推荐使用虚拟机,一台虚拟机完成MySql的安装和配置后,完全克隆一下就行。不建议使用Docker,在实际的生产流程里,数据库不太可能安装在容器中,真这么干可能会被人打死。容器的销毁,比之服务器的物理损坏,要容易得多。
修改MySql数据库的配置文件 /etc/my.cnf
[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=100 # [必须]服务器唯一ID
Bash命令:systemctl restart mysqld
配置修改完成后,重启对应服务器的MySql服务使配置生效,如果没报错,基本就是重启成功了。
登录MySql后执行以下语句,“%”意为允许所有IP访问。
GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';
PS:这一SQL语句的作用是创建一个用户xiaoming,密码为Root@123456,并且xiaoming用户授予REPLICATION SLAVE权限,这一权限常被用于建立主从复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过该用户复制。
show master status;
其中File为日志文件的名称,Position为当前改动的位置。
File:mysql-bin.000002
Position:441
注意在显示了这里的状态栏之后,不要再在主库中进行任何操作,否则日志文件的名称和位置都会发生改变。
修改MySql Slave的配置文件 /etc/my.cnf , 在配置中增加如下的一行。
[mysqld]
server-id=101 #[必须]服务器唯一ID
使对配置的修改生效
systemctl restart mysqld
登录MySql,执行下面的SQL:
change master to master_host='192.168.119.129',master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000002',master_log_pos=441;
start slave;
执行以下SQL
show slave status \G;
\G 意为格式化输出,可以方便阅读
这时,这两个数据库的主从复制便已经配置完成,可以正常运行。
这时,如果在主库中新建一个数据库项目,从库中也会出现一个一样的数据库项目:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。