基于gtids的主从复制搭建+lvs

slave服务器不小心写入数据的解决方案

如果数据⽐较少,可以通过跳过当前语句的⽅式解决,但是如果从服务器写⼊的数据⽐较多,架构必须重新搭建
可通过变量sql_slave_skip_counter临时跳过事务进⾏处理

mysql> set GLOBAL sql_slave_skip_counter=N # n代表跳过的n个事务

mysql> stop slave;
mysql> start slave;
跳过事务应该在slave上运⾏
传统的ab复制⽅式可以使⽤,基于GTIDs的⽅式不⽀持

基于gtids的主从复制搭建

GTIDs是完全基于事务的,因此不⽀持MYISAM存储引擎
gtids的限制条件:
1. 不⽀持⾮事务引擎(MyISAM)因为可以回导致多个gtid分布给同⼀个事务
2. create table select语句不⽀持(主库语法报错)
3. create、drop temprary table语法不⽀持
4. 必须使⽤enforce-gtid-consistency参数
5. sql-slave-skip-counter不⽀持
6. gtid复制环境中必须统⼀开启gtid或者关闭gtid
7. 在5.7之前使⽤mysql upgrade命令也会出现问题
步骤:
replication是基于传统的⽅式部署,并且已经在运⾏,利⽤已经存在的环境升级⾄基于GTIDs的replication
1. 修改配置⽂件,⽀持GTIDs(主从)
主服务器:
gtid-mode=on
log-slave-updates=1
enforce-gtid-consistency
从服务器:
log-bin=/usr/local/mysql/data/binlog
gtid-mode=on
log-slave-updates=1
enforce-gtid-consistency
skip-slave-start
2. 重启数据库(主从)
service mysql8 restart
3. 为了保证数据⼀直,master和slave都设置为只读

mysql> set @@global.read_only=ON;
Query OK, 0 rows affected (0.01 sec)

4. 从服务器上重新配置同步
即slave重新配置change  master  to

mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> reset slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> change master to
    -> master_host='192.168.118.20',
    -> master_user='slave',
    -> master_password='slave',
    -> master_port=3306,
    -> master_auto_position=1;
Query OK, 0 rows affected, 8 warnings (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for source to send event
                  Master_Host: 192.168.118.20
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000015
          Read_Master_Log_Pos: 157
               Relay_Log_File: relaylog.000002
                Relay_Log_Pos: 367
        Relay_Master_Log_File: binlog.000015
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

 
5关闭主从服务器的只读模式

mysql> set @@global.read_only=OFF;
Query OK, 0 rows affected (0.00 sec)

 

LVS

一个调度主机,有两个网卡

vip:对外,公网

dip:对内,局域网

主机名称ip地址功能
web01192.168.118.200rs
web02192.168.118.201realserver
nat

vip:192.168.118.135

dip:192.168.118.10

directorserver,ntp
dns192.168.118.110dns

web服务器:

下载nginx,在index.html写入内容,启动nginx,编写计划任务

yum  -y  install nginx

echo "web-----01" > /usr/share/nginx/html/index.html
[root@web01 ~]# nginx
[root@web01 ~]# crontab -e

30 3 * * * /usr/sbin/ntpdate 192.168.118.10   //时间服务器的IP

nat服务器:

需要两块网卡,再添加一块网卡

同步时间,编写计划任务,配置时间服务器,启动服务,设置开机自启动

  142  yum -y install ntpdate.x86_64 
  143  ntpdate cn.ntp.org.cn
  144  which ntpdate
  145  crontab -e

* 2 * * * /usr/sbin/ntpdate cn.ntp.org.cn

  147  yum -y install ntp
  148  systemctl start ntpd
  149  systemctl enable ntpd

dns服务器:

[root@dns ~]# yum -y install bind

[root@dns ~]# vim /etc/named.conf     //添加any
[root@dns ~]# vim /etc/named.rfc1912.zones 

zone "yuanyu.zhangmin" IN {
        type master;
        file "yuanyu.zhangmin.zone";
        allow-update { none; };
};

[root@dns ~]# cd /var/named/
[root@dns named]# cp -p named.localhost yuanyu.zhangmin.zone
[root@dns named]# vim yuanyu.zhangmin.zone


[root@dns named]# named-checkconf /etc/named.conf
[root@dns named]# named-checkconf /etc/named.rfc1912.zones 
[root@dns named]# named-checkzone yuanyu.zhangmin.zone yuanyu.zhangmin.zone
[root@dns named]# systemctl restart named

client客户端:

[root@allow ~]# echo "nameserver 192.168.118.110" > /etc/resolve.conf
[root@allow ~]# ping nat.yuanyu.zhangmin -c2
PING nat.yuanyu.zhangmin (192.168.118.135) 56(84) bytes of data.
64 bytes from 192.168.118.135 (192.168.118.135): icmp_seq=1 ttl=64 time=0.639 ms
64 bytes from 192.168.118.135 (192.168.118.135): icmp_seq=2 ttl=64 time=0.305 ms

 

nat配置规则:

安装ipvsadm

[root@nat ~]# yum -y install ipvsadm.x86_64

-A:添加一个虚拟主机,是vip地址,对外

[root@nat ~]# ipvsadm -A -t 192.168.118.135:80 -s rr
 

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值