由于终端系统中需要查询大量的报表,为了分担大部分的查询压力,因此系统设计Master-Salve复制架构也能够最好的将读、写操作分离。
Master库地址:10.10.10.41
Slave库地址:10.10.10.20
3.6.1 Master—Slave架构配置
1)创建同步用户
进入mysql创建一个同步账户,此账户用来同步数据库的数据
脚本:mysql>create user ‘sync’@10.10.10.20’ identified by ‘syncupdate’;
释义:创建sync账户,定义密码为syncupdate,并且设置只允许在10.10.10.20这台服务器上登录
2)设置账户权限
为同步账户设置相应的权限
脚本:GRANT SELECT, FILE, REPLICATION SLAVE ,REPLICATION CLIENT ON *.* TO 'sync'@'10.10.10.20' IDENTIFIED BY 'syncupdate' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
释义:为sync用户设定了SELECT、FILE、REPLICATION SLAVE、REPLICATION CLIENT在所有数据库的所有表上,并且只允许同步用户在10.10.10.20服务器上使用syncupdate密码进行登录
3)生效权限
创建完用户和分配完权限之后,刷新权限,让授权操作生效
脚本:flush privileges
4)复制数据文件
要复制数据文件,首先停止Master和Slave上的mysql和apache服务
脚本:shell>service mysqld stop -----停止数据库服务
脚本:shell>/data/zdxt/web/bin/apachectl stop -----停止apache服务
开始复制数据库文件,将master中的hek数据库文件复制到slave中相同目录下
Master中的hek数据库目录:/data/zdxt/db/data/hek
将此目录复制到Slave的相同目录下
复制结束后,修改Slave上 /data/zdxt/db/data/hek目录的权限
脚本:shell>chmod –R 777 /data/zdxt/db/data/hek
脚本:shell>chown –R mysql:mysql /data/zdxt/db/data/hek
5)修改Slave配置文件
修改Salve中的my.cnf的配置,将[mysqld]中的server-id设置成不是1的值即可
脚本:shell>vi /etc/my.cnf
设置:server-id = 20
6)Master启动mysql和Apache
脚本:shell>/data/zdxt/web/bin/apachectl start --------启动apache
脚本:shell>service mysqld start -------------启动mysql
7)记入二进制日志文件名和日志偏移量
进入mysql,查看master status
脚本:mysql>show master status
8)启动Slave
启动Slave,依据在Master上设置的同步账户,在Slave中进行同步授权:
脚本:mysql> change master to master_host='10.10.10.41',master_user='sync',master_password='syncupdate',master_log_file='mysql-bin.000007',master_log_pos=295;
其中的master_log_file和master_log_pos就通过7)步骤得出的值
9)启动Slave进程
脚本:mysql>show slave status;
看到如下提示证,证明Master-Slave架构设置成功:
10)验证Master-Slave是否作用
在Master上设置更新一条数据记录,看看Slave上的是否会更新
3.6.2 Master-Slave配置错误解决
示例图1:
设置完Master-Slave之后提示如图结果,可能是由于在Master上的同步账号权限设置出现问题,建议重新进行设置
示例图2:
设置完Master-Slave之后提示如图结果,是由于在授权认证时出现问题