MySQL 读写分离的主从数据库配置

准备两台服务器,都安装 mysql 服务器。主服务器称为 master, 从服务器称为 slave 。前提要设置好防火墙,保证网络通畅。

master 配置

配置 my.cnf

[mysqld]
#bind-address = 127.0.0.1    注释掉

server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
relay_log = /var/log/mysql/mysql-relay-bin.log

重启 mysql 。

登录到 mysql 并执行以下:

create user 'slave_user'@'salve_ip' identified by 'slave_pass';
grant replication slave on *.* to 'slave_user'@'salve_ip';
flush privileges
show master status;

取得并记下 FilePosition

slave 配置

配置 my.cnf

[mysqld]
#bind-address = 127.0.0.1    注释掉

server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
relay_log = /var/log/mysql/mysql-relay-bin.log

重启 mysql 。

登录到 mysql 并执行以下:

create database sync_database charset utf8mb4; -- 根据自己的设定修改
stop slave;
change master to master_host='master_ip', master_user='slave_user', master_password='slave_pass', master_log_file='mysql-bin.000002', master_log_pos=789; -- 这里的 master_log_file 和 master_log_pos 是 master 执行 show master status 的结果
start slave;

slave 只会同步 start slave; 之后的数据。之前的数据还是要通过导入的方法同步。