分散数据库的访问压力,提高访问效率。 (主服务器负责读/写请求,从服务器只负责读请求)
主服务器将数据更新记录到日志(bin-log),然后定期同步到从服务器。
步骤1: 所有数据更新都会被主库记录到主库的二进制日志(也叫变更日志)。
步骤2: 从库IO线程从主库上读取二进制日志,写入到从库的中继日志上。
步骤3: 从库SQL线程读取中继日志上的内容来更新从库。
1. 在Master数据库中创建一个备份帐户backup,并且只允许从10.100.0.200这个地址上来登陆,密码是1234。
mysql >
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO [email protected] IDENTIFIED BY '1234';
2. 拷贝数据。(假如是新安装mysql主从服务器,这一步就不需要,因为新安装的master和slave有相同的数据)。关停Master服务器,将Master中的数据拷贝到从服务器中,使得Master和slave中的数据同步,并且确保在全部设置操作结束前,禁止在Master和slave服务器中进行写操作,使得两数据库中的数据一定要相同!
3. 配置Master。接下来对master进行配置,
cp /etc/my.cnf /home/xiaoju/mysql/master.cnf
例如,在配置文件加入如下值:
server-id=1 //为主服务器A的ID值
log-bin=mysql-bin //二进制变更日志
重启master,
/usr/bin/mysqld_safe --defaults-file=/home/xiaoju/mysql/master.cnf &
运行SHOW MASTER STATUS,输出如下:
4. 配置Slave。 Slave的配置与master类似,如下:
cp /etc/my.cnf /home/xiaoju/mysql/slave.cnf
log_bin = mysql-bin
server_id = 2
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 1
server_id是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须设置,例如,如果slave为其它slave的master,必须设置bin_log。relay_log配置的是中继日志。log_slave_updates表示slave将复制事件写进自己的二进制日志。
5. 让slave连接master。 如下:
6. 启动Slave。
START SLAVE;
你可以用SHOW SLAVE STATUS语句查看slave的设置是否正确:
mysql> SHOW SLAVE STATUS\G
在这里主要是看:
Slave_IO_Running=Yes //负责与主机的IO通信
Slave_SQL_Running=Yes //负责slave的mysql进程
如果你在master上进行修改,你可以在slave上看到各种日志文件的位置的变化,同样,你也可以看到数据库中数据的变化。你可查看master和slave上线程的状态。在master上,你可以看到slave的I/O线程创建的连接:在master上输入show processlist\G;
7. 开启mysql的远程访问权限
登录主库(10.10.39.89),
mysql> grant all PRIVILEGES on *.* to root@'10.10.39.90' identified by '1234';
通过代理dbproxy程序(譬如C)来分离读写请求。
尽量缩短slave的同步执行时间,譬如提升硬件性能,降低数据安全性要求,多线程执行。