mysql数据库设置读写分离,可以使对数据库的写操作和读操作在不同服务器上执行,提高并发量和相应速度。
实验环境
master:
192.168.126.134 ubuntu64
slave:
192.168.126.135 ubuntu64
主从服务器的mysql数据库采用以下命令安装:
apt-get install mysql-server
mysql数据库采用以下方式启动或重启:
/etc/init.d/mysql start [stop , restart]
设置主数据库
master服务器,IP地址:192.168.126.134
创建slave用户
#需要在mysql>执行
GRANT REPLICATION SLAVE ON *.* TO 'rep1'@'192.168.126.%' IDENTIFIED BY 'pass';
修改my.cnf
找到server-id
并修改
server-id = 1
log-bin=master-bin
log-bin-index=master-bin.index
查看master status
#需要在mysql>执行
show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 190 | | |
+------------------+----------+--------------+------------------+
File和Position这两个参数在配置slave的时候会用到。
设置从数据库
slave服务器,IP地址:192.168.126.135
修改my.cnf
server-id=2
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
修改master
#需要再mysql->执行
change master to master_host='192.168.126.134', #Master 服务器Ip
master_port=3306,
master_user='repl',
master_password='pass',
master_log_file='master-bin.000003', #Master日志文件名
master_log_pos=190; #Master日志同步开始位置
启动slave
#需要再mysql->执行
start slave;
show slave status\G; //查看slave连接状态
如果需要修改Master日志文件名或日志开始位置,直接使用change master to
语句就可以。
change master to master_log_file='master-bin.000003', #Master日志文件名
master_log_pos=190; #Master日志同步开始位置
测试
我们在slave数据库中设置了master数据库的ip地址和用户名、密码以及master数据库的日志文件名。slave会实时监测master日志文件的变化,并进行同步。
所以,我们应该将master数据库作为写操作的数据库,slave数据库作为读操作的数据库。
我们在master数据库创建一个demo数据库,然后再slave数据库上查看是否存在demo数据库即可判断是否同步成功。
除此之外,我们还可以在slave数据库上使用show slave status\G;
命令查看slave的运行状态,如果报错的话会进行显示。
另外,错误信息还会记录到slave数据库的错误日志中。mysql数据库的错误日志的地址可以在my.cnf中查询到。