标签:val backend page 读写 创建 执行 scale 修改 服务器
1 mysql主从同步1.1主数据库配置:
环境:准备两台机器,一台作为主数据库,一台作为从数据库
(1)用户授权
mysql> grant replication slave on *.* to 用户名@"从服务器地址"
identified by "密码";
(2)启用binlog日志
vim /etc/my.cnf
server_id=54
log-bin=master54
binlog-format="mixed"
(3)重启数据库服务器
systemctl restart mysqld
ls /var/lib/mysql/master54.*
/var/lib/mysql/master54.000001 /var/lib/mysql/master54.index
(4)查看正在使用binlog日志文件。
# mysql -uroot -p123456
mysql> show master status;
1.2 从服务器配置
(1)显示自己是否是从数据库服务器
mysql> show slave status;
(2)测试主库授权的用户是否有效
#mysql -h192.168.4.54 -uyaya -p123456
mysql> show grants;
(3)修改配置文件指定server_id
#vim /etc/my.cnf
[mysqld]
server_id=55
#sync-binlog=1 #允许日志同步
#read_only=1 #只读模式
重启:systemctl restart mysqld
(4)在本机数据管理员登录主库信息
mysql> change master to
-> master_host="192.168.4.54",
-> master_user="yaya",
-> master_password="123456",
-> master_log_file="master54.000001",
-> master_log_pos=数字; #查看主的Position(偏移位置)
(5)开启从服务
mysql> start slave;
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
必须保证Slave_IO,Slave_SQL的状态为yes。如果不是,查看如下配置文件:
[root@ser55 ~]# vim /var/lib/mysql/auto.cnf
(6)验证主从同步配置:结果
客户端连接主库服务器 产生的新数据,在从角色的主机上都能够查看到。
1.3 工作原理
从角色主机的数据库目录下会多出如下文件:
master.info #存储主数据库的信息
slave55-relay-bin.XXXXXX
#中继日志文件(二进制文件,使用mysqlbinlog查看)
slave55-relay-bin.index #中继文件索引
relay-log.info #记录当前数据库服务器使用的中继日志文件
IO线程的作用:把主库的binlog日志内容记录到本机的relay-log日志里
SQL线程的作用:执行本机中继(relay-log)日志的sql命令,把数据写到本机的库。
mysql > show processlist;
Binlog Dump 把binlog的日志通过IO线程发给从库,从库通过SQL命令执行日志的语句,达到与主的数据库一致。
1.4 主从排错
IO线程报错:从库指定主库的信息错误
安全限制(selinux,firewall)
查看Last_IO_Error的报错信息
哪一项错误就改哪一项,change master to
SQL线程报错:
执行中继日志里的sql命令时,从库的库或者表不存在
查看报错信息:
Last_SQL_Error: 报错信息
mysql> stop slave; (reset slave)
在从本机有命令操作的库或表
mysql> start slave;
1.5 让从数据库临时不同步主库的数据
mysql> stop slave;
把从库还原成独立的数据库
rm -rf master.info relay-bin.* relay-log.info
1.6 主从同步常用配置参数:
主数据服务器使用的参数
[mysqld]
binlog_do_db=db1,db2 #只允许Master对哪些库记日志
binlog_ignore_db=db1,db2 #只不允许Master对哪些库记日志
从数据服务器使用的参数
[mysqld]
log_slave_updates 允许级联复制(主从从)
replicate_do_db=db1,db2(数据库库名) 只同步库1和库2
replicate_ignore_db=db1,db2 只不同步库1和库2
relay_log=名 指定中继日志文件名
2.1 配置读写分离
2.11 环境:基于主从
一台机器作为主数据库,一台为从数据库,一台为Mysql代理
2.12 为什么要做读写分离:
减轻服务器的并发访问压力同时提高硬件利用率。
2.13 配置maxscale
在mysql代理上配置
(1)装包
[root@ser53 ~]# rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm
[root@ser53 ~]# rpm -qc maxscale
/etc/maxscale.cnf.template
(2)配置文件说明
vim /etc/maxscale.cnf
[maxscale] #服务名称
threads=1 #(=auto自动的)线程数,默认为1,不改动
[server1] #调用服务器的名称,指定ip地址对应的名字
type=server
address=192.168.4.54 #主数据库服务器ip地址
port=3306 #端口
protocol=MySQLBackend
[server2]
type=server
address=192.168.4.55
port=3306
protocol=MySQLBackend
[MySQL Monitor] #指定要监控的主机 和监控时连接的用户
type=monitor
module=mysqlmon
servers=server1,server2
user=scalemon #监控数据库服务服务的运行状态和主从状态的用户
passwd=123456
monitor_interval=10000
#[Read-Only Service] #只读服务,不需要使用,注释掉
#type=service
#router=readconnroute
#servers=server1
#user=myuser
#passwd=mypwd
#router_options=slave
[Read-Write Service] #定义读写分离服务器列表
type=service
router=readwritesplit
servers=server1,server2 #前边定义的主机名
user=maxscale
#检查接收客户端连接请求时,连接的用户名和密码在数据库服务器上是否存在
passwd=123456 #密码
max_slave_connections=100%
[MaxAdmin Service]
type=service
router=cli
#[Read-Only Listener]
#type=listener
#service=Read-Only Service
#protocol=MySQLClient
#port=4008
[Read-Write Listener]
type=listener
service=Read-Write Service
protocol=MySQLClient
port=4006
[MaxAdmin Listener]
type=listener
service=MaxAdmin Service
protocol=maxscaled
socket=default
port=4010 #admin的监听端口
2.14 根据配置文件的设置在数据库服务器添加对应的授权用户。
(只在主服务器授权即可 从服务器会自动同步)
mysql> grant replication slave, replication client on *.*
to scalemon@'%' identified by “123456”; #创建监控用户
mysql> grant select on mysql.* to maxscale@'%' identified
by “123456”; #创建路由用户
mysql> grant all on *.* to student@'%' identified by “123456”;
#创建客户端访问用户
2.15 启动maxscale服务
maxscale --config=/etc/maxscale.cnf
或者maxscale -f /etc/maxscale.cnf
netstat -utnalp | grep maxscale
kill -9 pid号 #通过杀进程的方式停止服务
[root@ser53 ~]# ps -C maxscale
2.16 测试
[root@ser52 ~]# mysql -ustudent -p123456 -h192.168.4.53 -P4006
写入一条数据,此时在主数据库上能查看到,在从服务器上也能查到,说明在主服务器上进行写操作。
[root@ser53 ~]# maxadmin -P4010 -uadmin -pmariadb #进入管理
MaxScale> list servers #查看服务器列表状态
可以在从服务器上数据库内写数据,而此时主数据库并没有从库写入数据的信息,从其它客户端访问mysql代理,去查看数据库内的内容,如果能查到写的数据,就能确定在从库上查看。
标签:val backend page 读写 创建 执行 scale 修改 服务器
原文地址:http://blog.51cto.com/13452945/2065674