mysql实现主从复制、读写分离的配置方法(一)
1. 测试环境
两个CentOS7虚拟机
mysql 5.5-MariaDB
master_ip:192.168.1.109
slave_ip:192.168.1.118
2. 配置主服务器
2.1 修改 /etc/my.cnf 配置文件,增加如下内容:
# 指定唯一的server ID,master和slave的server-id不能一样
# 如不配置,在start slave后可能会报“ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO”的错误。
server-id = 1
# 表示启用binlog功能,并指定二进制日志的存储目录
log-bin=mysql-bin
2.2
mysql -uroot -p
create database dbtest; # 创建要被同步的数据库
create user 'slave'@'192.168.1.118' identified by 'slavepsw'; # 添加一个slave用户
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.1.118'; # 为slave指定replication权限
show master status;
2.3 与2.2作用相同
# 每个slave使用标准的mysql用户和密码链接master。进行复制操作的用户会收于REPLICATION SLAVE权限。
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'192.168.1.118' IDENTIFIED BY 'slavepsw' ;
# REPLICATION SLAVE 常用于建立复制时所需要用到的用户权限,也就是说slave server必须被master server授权具有该权限的用户,才能通过该用户复制
# REPLICATION CLIENT 不可用与建立复制,有该权限时,只是多了可以使用“SHOW SLAVE STATUS”、“SHOW MASTER STATUS”等命令
3. 配置从服务器
3.1 修改 /etc/my.cnf 配置文件,增加如下内容:
server-id = 2
log-bin=mysql-bin
3.2
mysql -uroot -p
create databases dbtest; # 创建要被同步的数据库
stop slave;
change master to master_host = '192.168.1.109',
master_port = 3306,
master_user = 'slave',
master_password = 'slavepsw',
master_log_file = 'mysql-bing.000002',
master_log_pos = 592; # 配置主数据库参数
start slave; #启动数据库复制功能;
如果Slave_IO_Running: Yes,Slave_SQL_Running: Yes,说明所有配置已成功。