您的位置:首页 > 数据库 > MySQL

mysql主从同步

2020-02-15 10:01 260 查看

mysql主从同步
1.1 mysql主从同步 工作原理
1.2 部署mysql主从同步
1.2.1 准备工作: 确保数据相同 从库必须要有主库上的数据。
1.2.1 配置mysql主从同步
1.2.1.1 配置主库 192.168.4.51

]# vim /etc/my.cnf
[mysqld]
server_id=51
log-bin=master51
:wq

]# systemctl restart mysqld

]# mysql -uroot  -p密码
mysql> grant  replication slave on  *.*  to  repluser@"%" identified by "123qqq...A";

mysql> show master status;

1.2.1.2 配置从库 192.168.4.52
]# vim /etc/my.cnf
[mysqld]
server_id=52
:wq

]# systemctl restart mysqld

]# mysql -uroot  -p密码

mysql> change  master to master_host="192.168.4.51",master_user="repluser",master_password="123qqq...AA",master_log_file="master51.000001",master_log_pos=441;

mysql> start slave;
mysql> show slave status\G;
Master_Host: 192.168.4.51
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

mysql> system cat /var/lib/mysql/master.info

1.2.1.3 测试主从同步配置
1 在主库51上添加访问数据的连接用户

]# mysql  -uroot  -p密码
mysql> create database db6;
mysql> grant all on db6.*  to  yaya@"%" identified by "123qqq...A"

;

2 客户端50 连接主库51 存储数据

]# mysql  -h192.168.4.51 -uyaya  -p123qqq...A
mysql> use db6;
mysql> create table  t1(id int);
mysql> insert into  t1 values(11),(99),(88)

3 从库52管理员本机登陆查看 , 有主库的数据

]# mysql  -uroot  -p密码
mysql> select  * from db6.a;

1.4 把从库还原 为独立的数据库服务器。

[root@mysql52 mysql]# cd /var/lib/mysql
[root@mysql52 mysql]# rm  -rf master.info
[root@mysql52 mysql]# rm  -rf relay-log.info
[root@mysql52 mysql]# rm  -rf mysql52-relay-bin.00000*
[root@mysql52 mysql]# rm  -rf mysql52-relay-bin.index
[root@mysql52 mysql]# systemctl  restart mysqld
[root@mysql52 mysql]# mysql -uroot -p密码
mysql> show slave status\G;

1.5 mysql主从同步常用配置项
1.5.1 写在主库/etc/my.cnf文件里的常用配置(对所有的从库有效)

]# vim /etc/my.cnf
[mysqld]
#binlog_do_db=gamedb  仅允许从库同步的库
binlog_ignore_db=bbsdb 不允许从库同步的库
:wq
]# systemctl restart mysqld
1.5.2  写在从库/etc/my.cnf文件里的常用配置(只对从库本机有效)

]# vim /etc/my.cnf
log_slave_updates
relay_log=中继日志文件名
#replicate_do_db=库名    //仅同步的库
replicate_ignore_db=库名 //只不同步的库
:wq

]# systemctl restart mysqld

1.6.3 配置mysql主从同步 主从从
51 52 53
主 从 从
配置从库53 仅同步主库 52 teadb 库数据
53 :

]# vim  /etc/my.cnf
[mysqld]
replicate_do_db=teadb
:wq
]# systemctl restart  mysqld
]# mysql -uroot -p密码
mysql> show slave status\G;
Replicate_Do_DB: teadb

配置主库51 只不允许 从库52 同步本机的 gamedb 库数据

]# vim  /etc/my.cnf
[mysqld]
binlog_ignore_db=gamedb
:wq
]# systemctl restart  mysqld
]# mysql -uroot -p密码
mysql> show master status\G
Binlog_Ignore_DB:gamedb

主从或主从从配置过程中可能出现的问题

一、数据库没有授权

对于mysql数据库没有授权,只需要用一条命令就可以了。

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

指点ip:%代表所有Ip,此处也可以输入Ip来指定Ip

输入后使修改生效还需要下面的语句

mysql>FLUSH PRIVILEGES;

二、服务器防火墙没有开放3306端口
centos 有两种防火墙 FirewallD和iptables防火墙

centos7 使用的是FirewallD防火墙。

FirewallD 是 iptables 的前端控制器,用于实现持久的网络流量规则。它提供命令行和图形界面,在大多数 Linux 发行版的仓库中都有。与直接控制 iptables 相比,使用 FirewallD 有两个主要区别:
1.FirewallD 使用区域和服务而不是链式规则。
2.它动态管理规则集,允许更新规则而不破坏现有会话和连接。

FirewallD 是 iptables 的一个封装,可以让你更容易地管理 iptables 规则 - 它并不是 iptables 的替代品。虽然 iptables 命令仍可用于 FirewallD,但建议使用 FirewallD 时仅使用 FirewallD 命令。
1.FirewallD防火墙开放3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

命令含义:

–zone #作用域

–add-port=3306/tcp #添加端口,格式为:端口/通讯协议

–permanent #永久生效,没有此参数重启后失效
重启防火墙
systemctl restart firewalld.service
2.iptables 开发3306端口

/sbin/iptables -I INPUT -p tcp -dport 3306 -j ACCEPT

/etc/rc.d/init.d/iptables save
4000
  • 点赞
  • 收藏
  • 分享
  • 文章举报
weixin_45273572 发布了2 篇原创文章 · 获赞 0 · 访问量 50 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: