上文讲了安装mysql步骤,此时我们在两台虚拟机上安装同样的mysql
192.168.153.129 master
192.168.153.130 slave
好了,现在开始配置master/slave
一、在master上增加slave的账号
创建backup账户,再设置REPLICATION权限
GRANT USAGE ON *.* TO 'backup'@'192.168.%' IDENTIFIED BY 'backup' WITH GRANT OPTION;
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backup@'192.168.%' IDENTIFIED BY 'backup';
二、配置master
修改/usr/local/mysql/my.cnf
server_id=1
log_bin=mysql_bin
此时可以登陆到mysql命令行,查看目前的状态
show master status;会出现File=mysql_bin.000001, Position=120的输出
三、配置slave
同样,也是修改/usr/local/mysql/my.cnf
server_id=2
log_bin=mysql_bin
relay_log=mysql_relay_bin
log_slave_updates=1
read_only=1
四、开始replication
change master to master_host='192.168.153.129', master_user='backup', master_password='backup', master_log_file='mysql_bin.000001', master_log_pos=120;
start slave;
五、测试验证
在192.168.153.129在test库中建表A,随意增加一条数据
查看192.168.153.130的test库中,出现了表A,且数据完全一致
至此,master/slave模式的mysql配置成功
以上为简单的描述,实际的production环境需要设置的会更多,这里不一一赘述。
P.S.关于slave中的read_only参数,这里由于我测试用的是root账户,所以依然可写
贴一篇别人博客里的介绍 来自http://blog.csdn.net/cindy9902/article/details/5886355
--read_only Make all non-temporary tables read-only, with the
exception for replication (slave) threads and users with
the SUPER privilege
SUPER privilege :
The SUPERprivilege enables an account to use CHANGE MASTER TO, KILLor mysqladmin killto kill threads belonging to other accounts (you can always kill your own threads), PURGE BINARY LOGS, configuration changes using SET GLOBALto modify global system variables, the mysqladmin debugcommand, enabling or disabling logging, performing updates even if the read_onlysystem variable is enabled, starting and stopping replication on slave servers, specification of any account in the DEFINER attribute of stored programs and views, and enables you to connect (once) even if the connection limit controlled by the max_connectionssystem variable is reached.
To create or alter stored routines if binary logging is enabled, you may also need the SUPERprivilege, as described in Section 18.6, “Binary Logging of Stored Programs” .
read-only选项:对所有的非临时表进行只读控制。但是有两种情况例外:
1. 对replication threads例外,以保证slave能够正常的进行replication。
2. 对于拥有super权限的用户,可以ignore这个选项。
SUPER 权限 : 1. 可以有change master to, kill其他用户的线程的权限。
2. Purge binary logs 来删除binary log, set global来动态设置变量的权限。
3. 执行mysqladmin debug命令,开启或者关闭log,在read-only打开时执行update/insert操作。
4. 执行start slave, stop slave.
5. 当连接数已经达到max_connections的最大值时,也可以连接到server。