MYSQL主从复制的必要性不用多言,提高性能,一主多从,多主多从,感觉有点乱啊!(*^▽^*)
具体怎么配置,我们就演示一下一主多从吧:
1、准备两台linux服务器,如果没有的自己买或者开两个vmware配置一下就行,这里就不多说了;
2、两台服务器安装好MYSQL环境,至少8.0吧,低版本也行,但是容易出问题。数据库版本号保持一致。
3、选一台做主服务器,创建一个账户;可以不用命令行,用Navicat工具直接创建用户赋予以下权限,如果不清楚在测试环境下直接勾选所有权限也行。
CREATE USER test identified with mysql_native_password by '123456';
grant REPLICATION CLIENT ON *.* TO test;
grant REPLICATION SLAVE ON *.* TO test;
grant SUPER ON *.* TO test;
grant reload on *.* to test;
FLUSH PRIVILEGES;
4、修改MYSQL配置文件
/etc/mysql/mysql.conf
# bind-address = 127.0.0.1 注释掉
server-id = 1
server-id 这个不能重复,你可以自定义名字,但一定保持唯一性;
修改完毕后重启数据库;
5、分配一个主从复制的权限给我们的test用户
grant replication slave on *.* to test;
FLUSH PRIVILEGES;
show master status;
可以看到我们主库相关信息内容,文件,偏移数。这两个是重点,后面需要复制这两个。
6、接下来,我们开始配置从库
change replication source to SOURCE_HOST='192.168.0.2',SOURCE_USER='test',SOURCE_PASSWORD='123456',SOURCE_LOG_FILE='mysql-bin.000005',SOURCE_LOG_POS=1952;
这里分别是主服务器的IP,账户,密码,需要复制的二进制文件以及偏移量数字;
7、开启服务
start replica; 开启服务 如果配置有问题 就 stop replica 然后在开启
show replica status\G; 查看配置详情
Replica_IO_Running和Replica_SQL_Running必须同时为Yes才行,从库会创建两个线程,一个线程负责与主库进行通信,获取二进制日志,存放到中间表,另一个线程则是将中间表保存的二进制日志的信息进行执行,存入从库中。
至此,我们主从复制已经完成,如果要开启多个从库,就增加配置就行,server_id不能重复。现在可以在主库任何操作,从库都可以完成。新增一台从库一定要和主库保持一致,不然各种问题。
主从设置好,后面可以通过shardingJDBC进行配置,让所有写入操作进行主库,读在从库。