Mysql互为主从+keepalived实现高可用性(1)

1)规则:

    1) db-51      192.168.4.51       Mysql 5.7

    2) db-52    192.168.4.52      Mysql 5.7 

    vip: 192.168.4.50

2)创建Mysql互为主从:

  1、在192.168.4.51 (db-51)安装Mysql,创建同步复制用户(用于192.168.4.52(db-52)主机同步数据)

 1 [[email protected]51 ~]#tar -xf mysql-5.7.17.tar -C mysql
 2 [[email protected]51 ~]#yum -y install net-tools perl-Data-Dumper perl-JSON
 3 [[email protected]51 mysql]#cd mysql
 4 [[email protected]51 mysql]#rpm -Uvh mysql-community-*.rpm
 5 [[email protected]51 mysql]#systemctl start mysqld
 6 [[email protected]51 mysql]#grep password /var/log/mysqld.log
 7 [[email protected]51 mysql]#mysql -uroot -p‘y8glj!u=ldQ%‘
 8 > set global validate_password_policy=0;
 9 > set global validate_password_length=6;
10 > set password=‘123456‘;        //5.7开始设置mysql数据root用户密码
11 > exit
12 [[email protected]51 mysql]# vim /etc/my.cnf
13 validate_password_policy=0
14 validate_password_length=6
15
16 server_id=51                        //设置mysql的server id
17 log_bin=/var/lib/mysql/mysql-master-51
18 binlog_format=mixed
19
20
21 [[email protected]51 mysql]#systemctl stop firewalld
22 [[email protected]51 mysql]#systemctl disable firewalld
23 [[email protected]51 mysql]#systemctl restart mysqld
24 [[email protected]51 mysql]#mysql -uroot -p
25 > grant replication slave on *.* to [email protected]‘%‘ identified by ‘123456‘;      //创建主从复制用户
26 > show warnings;
27 > show grants for [email protected]‘%‘;      //查看用户权限
28 > flush table with read lock;        //给服务加读写锁,注意:关闭本连接session后就自动解锁了。
29 > show master status;          //查看本机作为主库状态信息。

  2、在192.168.4.52 (db-52)安装Mysql ,设置同步主库信息,同时创建同步复制用户(用于192.168.4.51 (db-51)主机同步数据)。

 1 [[email protected]52 ~]#tar -xf mysql-5.7.17.tar -C mysql
 2 [[email protected]52 ~]# yum -y install net-tools perl-Data-Dumper perl-JSON
 3 [[email protected]52 ~]#cd mysql
 4 [[email protected]52 mysql]#rpm -Uvh mysql-community-*.rpm
 5 [[email protected]52 mysql]#cd ~
 6 [[email protected]52 ~]#systemctl start mysqld
 7 [[email protected]52 ~]#grep password /var/log/mysqld.log
 8 [[email protected]52 ~]#mysql -uroot -p‘k:sv!HWtV7d>‘
 9 > set global validate_password_policy=0;
10 > set global validate_password_length=6;
11 > set password=‘123456‘;        //5.7开始
12 > exit
13 [[email protected]52 ~]#vim /etc/my.cnf
14 [mysqld]
15 validate_password_policy=0
16 validate_password_length=6
17
18 server_id=52
19 log_bin=/var/lib/mysql/mysql-master-52
20 binlog_format=mixed
21
22 [[email protected]52 ~]#systemctl stop firewalld
23 [[email protected]52 ~]#systemctl disable firewalld
24 [[email protected]52 ~]#systemctl restart mysqld
25 [[email protected]52 ~]#mysql -uroot -p
26 > reset slave;                       //重置从库服务,即清空slave服务
27 > show slave status;
28 > change master to                    //配置主库
29     -> master_host=‘192.168.4.51‘,
30     -> master_user=‘repl‘,
31     -> master_password=‘123456‘,
32     -> master_log_file=‘mysql-master-51.000001‘,
33     -> master_log_pos=437
34     -> ;
35 > start slave;         //启动slave服务
36 > show slave status\G
37 > create user [email protected]‘%‘ identified by ‘123456‘;      //创建主从复制用户
38 > grant replication slave on *.* to  [email protected]‘%‘;      //给用户授权
39 > show grants for  [email protected]‘%‘;                 //查看用户权限
40 > show master status;                     //查看本机作为主库信息。

  3、在192.168.4.51 (db-51)上Mysql中设置同步主库信息,创建表及记录查看是否同步。

 1 > unlock tables;        //释放锁
 2 > reset slave          //重置slave
 3 > show slave status\G
 4 > change master to
 5     -> master_host=‘192.168.4.52‘,
 6     -> master_user=‘repl‘,
 7     -> master_password=‘123456‘,
 8     -> master_log_file=‘mysql-master-52.000001‘,
 9     -> master_log_pos=595;
10 > start slave;          //开启slave从库同步服务
11 > show slave status\G
12 > show databases;
13 > create database mygame;
14 > use mygame
15 > create table t1(
16     -> id int(4) not null auto_increment primary key,
17     -> name char(10)
18     -> );
19 > insert into t1(name) values("Tom"),("Jave");

  4、在192.168.4.52 (db-52)上Mysql中 创建表及记录查看是否同步。(检查操作)

[[email protected]52 ~]#mysql -uroot -p
> show databases;
> use mygame
> insert into t1(name) values("Bom"),("Baly");
> select * from t1;
> create table t2 select name from t1 where false;            //复制表结构
> desc t2;
> insert into t2 values("tom"),("poly");
> select * from t2;

  5、在192.168.4.51 (db-51)上Mysql中 创建表及记录查看是否同步。(检查操作)

1 [[email protected]51 ~]mysql -uroot -p
2 > show databases;
3 > use mygame
4 > desc t2;
5 > insert into t2 values("tom"),("Jam");
6 > select * from t2;

注1:让互为主从库,有各自的自增变量:

 1 #主库1配置my.cnf:
 2 [[email protected]1 ~]#vim /etc/my.cnf
 3 auto_increment_increment = 2
 4 auto_increment_offset = 2
 5 log-bin =/mysql_multi_case/3306/mysqld-bin
 6 log-slave-updates = 1                    //级联服务
 7
 8 主库2配置my.cnf: 
 9 [[email protected]2 ~]#vim /etc/my.cnf
10 auto_increment_increment = 2
11 auto_increment_offset = 1
12 log-bin =/mysql_multi_case/3307/mysqld-bin
13 log-slave-updates = 1                    //级联服务
14
15
16
17 注意:
18 auto_increment_increment      控制列中的值的增量值,也就是步长。
19 auto_increment_offset         确定AUTO_INCREMENT列值的起点,也就是初始值。
20
21 上述两个变量:可以在全局以及session级别设置这2个变量  。

参考:

https://blog.51cto.com/superpcm/2094958
https://blog.51cto.com/superpcm/2095731
https://www.cnblogs.com/DBArtist/p/auto_increment.html
https://blog.csdn.net/leshami/article/details/39779509#

原文地址:https://www.cnblogs.com/gageshen/p/11732091.html

时间: 2024-08-06 14:20:20

Mysql互为主从+keepalived实现高可用性(1)的相关文章

MySQL互为主从+Keepalived高可用数据库集群

1.剧情回顾 在之前的博客上,我做了一个MySQL主从配置的实验,链接在这:http://blog.51cto.com/superpcm/2094958 .在这里我决定把这两个数据库做成互为主从,然后在这两个互为主从的数据库上配置keepalived,实现高可用,怎么配置可以参考我前文高可用的实验博客,http://blog.51cto.com/superpcm/2095395 . 最后实现的的拓扑图如下: 2.配置MySQL 互为主从复制 之前可能没有说明,实验默认都是开放所有端口给同一网段的

MySQL高可用,MySQL互为主从+keepalived。

一:环境:centos7.5 MySQL5.7192.168.3.222 master192.168.3.158 slave192.168.3.223 VIP二:首先做出双主来以下操作两台机器都要做2.1:首先域名解析: ###vim /etc/hosts (两台都做) 192.168.3.222 master 192.168.3.158 slave 2.2:下载MySQL5.7 ### wget http://repo.mysql.com/mysql57-community-release-e

Keepalived+Mysql互为主从高可用安装配置

Keepalived+Mysql互为主从高可用安装配置环境介绍:keepalived_vip=192.168.1.210    (写虚拟ip)mysql_master01      eth0:192.168.1.211  eth1:172.20.27.211 (1核1G)mysql_master02      eth0:192.168.1.212  eth1:172.20.27.212 (1核1G) 1.安装mysql数据库(所有节点安装)  //此处省略安装mysql服务2.编辑my.cnf配

MySQL互为主从模型实现基于SSL复制

一.MySQL复制 1.MySQL复制过程描述 MySQL主服务器上每一次发生的有可能产生修改或者产生修改的操作都会在主服务器上基于语句或基于行写入二进制日志,从服务器会在此期间启用一个IO线程不断的向主服务器发送请求,主服务器的二进制日志一但有更新,则会启用binlog dump线程,把数据发送给对方,从服务器接收到数据后则会将二进制日志的内容同步至本地的中继日志保存,而后启用SQL线程,将日志中的操作语句写入本地从服务器数据库: 2.mysql复制的同步和异步 同步:客户端向主服务器执行一条

Mysql互为主从问题

我搭建的是mysql 互为主从 复制 两台机器的mysql环境完全相同 第一部分测试: B为master  A为slave的同步测试 在B上创建表lian,并插入数据mysql> create table lian (a int,b char(10)); mysql> insert into lian (a,b)values(22,'hahah'); mysql> show tables;+------+| Tables_in_test |+------+| lian          

Mysql互为主从

Mysql互为主从环境:系统环境:centos6.5_x64Mysql-A:172.18.49.10Mysql-B:172.18.49.2Mysql安装已经完成.两台mysql上时间同步: ntpdate pool.ntp.org 在A上操作: vi /etc/my.cnf 添加:log-bin=mysql-bin //开启二进制日志server-id=1 //mysql的idrelay_log=relaylogs service mysqld restart 登录mysql,新建同步用户: m

KeepAlived+MySQL互为主从

解决Master单点问题,两台mysql互为主备,双向replication.当一master挂了,则将slave切换为master,继续工作.好,给定两台机器 主机A:192.168.1.201 主机B:192.168.1.202 一.互为主从 1.配置 主机A上,vim /etc/my.cnf,添加: [mysqld] log-bin=mysql-bin server-id=1 #服务id要和B不同 binlog_do_db=db1 master-host = 192.168.1.202 #

Mysql互为主从架构配置

MySQL主主复制结构区别于主从复制结构.在主主复制结构中,两台服务器的任 何一台上面的数据库存发生了改变都会同步到另一台服务器上,这样两台服务器 互为主从,并且都能向外提供服务. 这就比使用主从复制具有更好的性能. 接下来我将使用两个同样的服务器来实现这个效果: server1_mysql:192.168.1.108 server2_mysql: 192.168.1.110 拓扑结构:server1_mysql-------server2_mysql 1.创建用户并授权server1:mysq

Linux下 Mysql 互为主从

系统环境:CentOS 6.5 master1:192.168.100.204 master2:192.168.100.205 mysql版本:mysql-5.6.19 注:mysql的5.5以下的版本和5.5以上的版本配置方法不一样 以下两个节点安装 1:防火墙打开相应端口 #  /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT #  /etc/rc.d/init.d/iptables save 2:安装相关依赖包 #  yum -y