读写分离 主从复制

   日期:2020-11-15     浏览:87    评论:0    
核心提示:测试环境:主节点:81.69.247.195从节点:124.71.182.20linux:centos6.5主:1.编辑 vim /etc/my.cnf添加:log-bin = mysql-bin添加 :server-id =1添加:innodb-file-per-table =ON添加:skip_name_resolve=ON2.重启mysql:service mysqld restart3.进入mysql:mysql -u root -p4.查看二进制信息:sh.
测试环境:
主节点:81.69.247.195
从节点:124.71.182.20
linux:centos6.5


主:
1.
编辑 vim /etc/my.cnf
添加:log-bin = mysql-bin
添加 :server-id =1
添加:innodb-file-per-table =ON
添加:skip_name_resolve=ON

2.
重启mysql:service mysqld restart

3.进入mysql:mysql -u root -p

4.查看二进制信息:
show global variables like '%log%';

5.查看主节点二进制日志列表
show master logs;

6.查看主节点的server id
show global variables like '%server%';

7.在主节点上创建有复制权限的用户。REPLIACTION SLAVE ,REOPLIATION CLIENT
grant replication slave,replication client on *.* to 'admin'@'124.71.182.20' identified by '123456';

8.刷新
flush privileges;


从:
1.
编辑 vim /etc/my.cnf
添加:relay-log=relay-log
添加:relay-log-index=relay-log.index
添加:server-id=2
添加:innodb_file_per_table=ON
添加:skip_name_resolve=ON

2.重启mysql:service mysqld restart

3.进入mysql:mysql -u root -p

4.查看二进制信息是否开启:
show global variables like '%log%';

5.产看server 相关信息
show global variables like '%server%';

6.在从节点配置访问主节点的参数信息
添加 主节点主机,访问主节点的用户名及密码,主节点二进制文件信息。
注意:主节点的二进制文件一定要是二进制列表中的最后一个二进制文件。

CHANGE MASTER TO MASTER_HOST='81.69.247.195',MASTER_USER='admin',MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000009',MASTER_LOG_POS=430;

7.因为没有启动 从节点的复制线程,IO线程 和 SQL 线程都为NO.
show slave status\g;

启动:start slave;

测试:
在主上创建数据库并查看二进制信息:
create database test charset 'utf8';

show master status;

在从节点查找二进制日志信息,并查看mydb数据库是否复制成功
show slave status\G;

基本命令:
stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
show slave status\G

 

主从复制架构中应注意的问题:

从节点要设置某些限定使得它不能进行写操作,才能保证复制当中的数据一致。

1:限制从服务器为只读
在从服务器上设置:
read_only = ON,但是此限制对拥有SUPER权限 的用户均无效。
阻止所有用户:
mysq>FLUSH TABLES WITH READ LOCK;

2:如何保证主从复制时的事物安全?
1:在主节点设置参数
sync_binlog=1: Mysql开启bin-log日志使用bin-log时,默认情况下,并不是每次执行写入就与硬盘同步,这样在服务器崩溃时,就可能导致bin-log最后的语句丢失。可以通过这个参数来调节,sync_binlog=N,使执行N次写入后,与硬盘同步。1是最安全的,但是也是最慢的。
如果用到innode 存储引擎:
innodb_flush_logs_at_trx_commit=ON(刷写日志:在事务提交时,要将内存中跟事务相关的数据立即刷写到事务日志中去。)
innodb_support_xa=ON (分布式事务:基于它来做两段式提交功能)
sync_master_info=1:每次给从节点dump一些事件信息之后,主节点的master info 信息会立即同步到磁盘上。让从服务器中的 master_info 及时更新。

2:在每个slave节点
skip_slave_start =ON (跳过自动启动,使用手动启动。)
relay_log也会在内从中先缓存,然后在同步到relay_log中去,可以使用下面参数使其立即同步。
sync_relay_log =1 ,默认为10000,即每10000次sync_relay_log事件会刷新到磁盘。为0则表示不刷新,交由OS的cache控制。
sync_relay_log_info=1每间隔多少事务刷新relay-log.info,如果是table(innodb)设置无效,每个事务都会更新

注: 在从节点中 master.info是记录在主节点复制位置的文件。

relylog_info: 本地将来至于主节点的哪一个二进制文件中position并且保存文本地哪一个中继日志中的哪一个postion. 从节点启动时也需要根据relay-log.info定位本地relay-log.

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服