目录: 一,主从同步
二,数据读写分离
三,mysql优化
一,mysql主从同步。
1.1什么是主从同步
1.2主从同步的工作原理
1.3配置主从同步,并验证配置
1.4 主从同步结构模式
1.5主从同步常用配置参数
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.1什么是主从同步?
让其他的Mysql数据库服务器和正在被访问的数据库服务器上的数据保持一致。
1.2主从同步工作原理?
IO线程:把主库binlog日志里的sql命令保存到本机的中继日志文件里
SQL线程:执行本机中继日志文件里sql命令,把数据写进本机的数据库服务器里。
1.3配置主从同步 并验证配置
主库的配置步骤:
(1)用户授权: grant replication slave on *.* to [email protected]“192.168.4.52” identified by "123456";
(2)使用binlog日志:
vim /etc/my.cnf
[mysqld]
server_id=51
log-bin=/binlogdir/master51
binlog_format="mixed"
mkdir /binlogdir
chown mysql /binlogdir/
systemctl restart mysqld
(3)查看正在使用的binlog文件信息
mysql-> show master status;
环境准备:关闭防火墙,selinux,确保主库的数据和从库的数据要一致。
保留初始4个库。
从库的配置步骤
测试主库用户授权:mysql -h192.168.4.51 -uplj -p123456
指定server_id
vim /etc/my.cnf s
[mysqld]
server_id=52
log_bin=/mylog/slave52
数据库管理配置主库信息
mkdir /mylog
chown -R mysql /mylog
systemctl restart mysqld ; mysql -uroot -p123456
发起同步操作:
mysql-> change master to master_host=‘主服务器IP‘,
-> master_user=‘plj‘, (被授权用户名)
-> master_password=‘密码‘ ,(被授权用户密码)
-> master_log_file=‘日志文件‘, //可以在主上面show master status
-> master_log_pos=偏移位置; //可以在主上面show master status
start slave 开启服务 //如果以后要更改信息要先stop slave在去修改。
查看本机IO线程和SQL线程
mysql -> show slave status\G;
mysql->stop slave;
mysql->start slave;
Last_IO_Error:IO进程报错信息
Last_SQL_Error:SQL进程报错信息
在库下的数据库目录下多处来的文件:
master.info 记录主库信息
主机名-relay-bin.编号 中继日志文件
主机名-relay-bin.index 索引文件(记录已有的中继日志文件)
relay-log.info 记录中继日志信息
主库:show processlist;
可以看到有个binlog dump 这个程序每次新进sql命令都会通知从库上面的I/O线程去实现同步更新。
实现最终效果:从库实现增,删,改的实时同步。对主库上的所有操作
在从库上都会有对应数据。
暂时关闭从库: stop slave ; show slave status;
取消从库定义:删除主目录下面的几个文件
rm -rf master.info relay-log.info mysql52-relay-bin.*
重起服务******************************************************************************************1.4主从同步的结构模式
一主一从
一主多从
主从从
主主结构
1.5主从同步常用配置参数(/etc/my.cnf)
主库的配置参数(在主库的设置对所有的从生效)
binlog_do_db=库名列表 用,间隔符号 #只允许同步的库
binlog_ignore_db=库名列表 用,间隔符号 #只不允许同步的库
从库的配置参数(只有对从库自己生效)
log_slave_updates //允许级联复制
relay_log=文件名 //指定中继日志文件的名字
replicate_do_db=库名列表 用,间隔符号 #只同步的库
replicate_ignore_db=库名列表 用,间隔符号 #只不同步的库
*************************************************************************************
二,数据读写分离(maxscale软件+一主一从结构)
mysql中间件(和mysql服务一起提供服务的软件)
实现读写分离的软件:mycat mysql-proxy maxscale
2.1什么是数据读写分离
把客户端访问数据时的查询请求和写入请求
分别给不同的数据库服务器处理。
2.2为什么要做读写分离
减轻单台服务器的并发访问压力同时提高硬件的利用率。
3.3配置读写分离
(1)配置主从同步(一主一从 51(主) 52 (从))
(2)配置代理服务器55
1,把数据库服务停止并设置开机不运行,禁用selinux 和firewalld
2,装包 修改配置文件 用户授权 启动服务 查看端口号
rpm -Uvh maxscale-2.1.2-1.rhel.7.x86_64.rpm
cp /etc/maxscale.cnf /root/
vim /etc/maxscale.cnf
9 [maxscale]
10 threads=auto //用来自动匹配cpu的线程
18 [server1] :定义监听主机1
19 type=server
20 address=192.168.4.51
21 port=3306
22 protocol=MySQLBackend
23
24 [server2] :定义监听主机2
25 type=server
26 address=192.168.4.52
27 port=3306
28 protocol=MySQLBackend
36 [MySQL Monitor]
37 type=monitor
38 module=mysqlmon
39 servers=server1,server2 //定义监听主机
40 user=scalemon //监听主机的登陆用户
41 passwd=123456
42 monitor_interval=10000
53 #[Read-Only Service] //注释行
54 #type=service
55 #router=readconnroute
56 #servers=server1
57 #user=myuser
58 #passwd=mypwd
59 #router_options=slave
64 [Read-Write Service]
65 type=service
66 router=readwritesplit
67 servers=server1,server2 //额外添加主机
68 user=maxscale //用来检测客户机登陆用户是否存在的用户
69 passwd=123456
70 max_slave_connections=100%
86 #[Read-Only Listener] //注释掉这些行
87 #type=listener
88 #service=Read-Only Service
89 #protocol=MySQLClient
90 #port=4008
92 [Read-Write Listener]
93 type=listener
94 service=Read-Write Service
95 protocol=MySQLClient
96 port=4006
97
98 [MaxAdmin Listener]
99 type=listener
100 service=MaxAdmin Service
101 protocol=maxscaled
102 socket=default
103 port=4016 //额外添加行
在主从数据库上授权:
grant replication slave,replication client on *.* to
-> [email protected]‘%‘ identified by "123456"; //授权给maxscale软件连接用户监听权限
grant select on mysql.* to [email protected]‘%‘ identified by "123456"; //授权maxscale软件maxscale 用户查询权限,用来检测代码登陆用户是否存在。
测试:mysql -h51/52主机IP -u授权用户 -p密码 去测试是否可以登陆
3,访问管理端口查看主从同步状态信息及数据库服务的状态
maxscale -f /etc/maxscale.cnf //启动服务
netstat -antpul | grep maxscale //查看进程
ps -C maxscale //查看进程pid
停止服务:killall -9 maxscale
#maxadmin -uadmin -pmariadb -P4016
list servers //查寻读写分离客户机的运行状态。
3.4测试配置?在客户端测试配置
注意:tony手动去主服务授权对一个库.*授权all权限.
#mysql -h192.168.4.55 -P4006 -utony -p123456
mysql -> 使用一个查询语句/一个写入命令。
测试是否读写分离,读在52服务器,写在51服务器。
3.5配置分离结构有什么缺点?
单点故障,数据量大的时。数据传输会有瓶颈。
3.6数据读写分离拓扑结构
4.254
|
|
55(安装maxscale软件)
+++++++++++++++++++++++++++
51主 52从