mysql1.6(主从同步,数据读写分离)

目录:   一,主从同步

              二,数据读写分离

          

一,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 plj@“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  statusG;

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 

-> scalemon@'%' identified by "123456";  //授权给maxscale软件连接用户监听权限

grant select on mysql.* to maxscale@'%' 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从

原文地址:https://www.cnblogs.com/yunsshcy/p/8690652.html