mysql主从复制
1.准备数据库服务器
要实现主从复制,需要准备两台版本相同,或版本不同但是互相兼容的数据库服务器,并保证两台数据库的连通性。
2.给两台服务器分别赋不同的server_id,并设置数据库服务器的只读状态
在主数据库(master)中给数据库服务器赋server_id(一般情况下,server_id可以取任意整数值,但是和从库不一致即可)
SET GLOBAL server_id = 1;
查询server_id
SELECT @@server_id;
给主库设置只读状态为0
SET GLOBAL read_only = 0;
查询主库的只读状态
SELECT @@read_only;
同理,在从数据库(slave)中给数据库服务器赋server_id(一般情况下,server_id可以取任意整数值,但是和主库不一致即可)
SET GLOBAL server_id = 5;
查询server_id
SELECT @@server_id;
给从库设置只读状态为1
SET GLOBAL read_only = 1;
查询从库的只读状态
SELECT @@read_only;
3.在主库中创建一个用于主从复制的角色,并赋予主从复制以及其他增删改查的权限
# 创建一个名为slave_user的用户,密码为123456
CREATE USER 'slave_user'@'%' IDENTIFIED BY '123456';
# 给slave_user用户赋予复制的权限
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%';
# 使赋权限的操作生效
FLUSH PRIVILEGES;
4.查看主库的日志信息以及日志坐标
show master status;
5.从库配置
CHANGE MASTER TO MASTER_HOST='主库ip',MASTER_USER='slave_user',MASTER_PASSWORD='123456',MASTER_LOG_FILE='binlog.000032',MASTER_LOG_POS=88427;
其中,MASTER_HOST为主库ip;MASTER_USER为主库创建的复制用户名;MASTER_PASSWORD为主库创建的复制用户密码;MASTER_LOG_FILE为在主库查询的日志名File;MASTER_LOG_POS为主库日志当前坐标
6.在从库开启主从复制
start slave;
查看主从复制状态
show slave status;
如果Slave_IO_Running和Slave_SQL_Running都为Yes,则证明成功开启主从复制
7.主从复制验证
在主库中创建一个database
create database slave_test;
刷新从库数据库列表
发现从库成功创建相同数据库
至此,mysql的主从复制完成