【www.350.vip】6主主复制及keepalived,mysql主从复制

1.实验目标

豆蔻梢头 、集团网址单个 MySQL 难点分析
在企业网址中,后端 MySQL
数据库只有生龙活虎台时,会有以下难题:单点故障,服务不足
用;无法管理多量的现身数据央求;数据错过将引致大魔难。
改变形式:
充实 MySQL 数据库服务器,对数码进行备份,形成主备。
保障打算 MySQL 数据库服务器是千篇朝气蓬勃律的
主服务器宕机了,备份服务器继续专门的学问,数占有保持
MySQL 主从复制与读写分离是细心相关

 mysql服务器作为生产情况中使用最广大的数据库软件,以其开源性,牢固性而广小运用,但与此同一时间由于数量存款和储蓄,读写频率高,极易产生数据库出错,从而给公司产生不可挽回的损失,我们除了做好数据库的备份职业外,同有的时候间,还相应用化学解数据库服务器的单点故障难点。

www.350.vip 1

2.搭建碰到

少年老成台主服务器能够做三个从服务器,从服务器也得以当做主服务器,再做八个从服务器,依此类推….

两台 mysql 服务器

二、主从复制原理原理
MySQL 主从复制的品种:
·基于语句的复制
·基于行的复制
·混合类型的复制

172.16.1.2     mysql   + keepalived

www.350.vip 2

172.16.1.12   mysql  + keepalived

1、MySQL 从服务器开启 I/O
线程,向主服务器乞求数据同步(获取二进制日志)
2、MySQL 主服务器开启 I/O 线程回应从服务器
3、从服务器获得主的二进制日志写入中继日志
4、从服务器开启 SQL 线程将日志内容实施,完成多少同步

黄金年代台测验机

三、MySQL 主从备份案例

172.16.1.1

两台CentOS7服务器

3.景况布署

master—192.168.1.46

一台 mysql 服务器 + keepalived

slave—192.168.1.47

1卡塔尔国对于mysql源码安装可能yum 安装均可,此处相当少讲。

富有服务器关闭防火墙、关闭selinux

2) 主MySQL配置

建立刻间协同情状 , 在主服务器上设置配备 NTP  时间一同服务器

主MySQL安装时间同步器,yum  -y  install ntp

[root@master ~]# yum -y install ntp

vim   /etc/ntpd.conf

[root@master ~]# vim /etc/ntp.conf

添加

22 server 127.127.1.0 // 手动增多此两行内容
23 fudge 127.127.1.0 startum 8

server 127.127.1.0
fudge 127.127.1.0 startum 8

[root@master ~]# systemctl start ntpd

启动service   ntpd  start

[root@master ~]# chkconfig ntpd on

布署mysql目录下的 my.cnf文件

从服务器上进行时间同步

vim my.cnf

[root@slave ~]# yum -y install ntpdate

[mysqld]
log-slave-updates=true                           
#开启从服务器的日记更新
server-id =
11                                          #主服务器的ID ,那么些能够随意定,可是与从服务器要不等

[root@slave ~]# ntpdate 192.168.1.46
23 Aug 17:50:14 ntpdate[3407]: adjust time server 192.168.1.46 offset
0.000029 sec
[root@slave ~]# crontab -e

log-bin=mysql-bin                                    #张开二进制日志

[root@slave ~]# crontab -l

登录mysql,   mysql   -uroot   -p123456  

*/5 * * * * /usr/sbin/ntpdate 192.168.1.46

开创myslave 账号,并授权能够复制

布置 MySQL Master  主服务器

grant   replication slave   on  *.*  to  ‘myslave’@’172.16.1.12’    
identified   by  ‘123456’;

[root@master ~]# vim /etc/my.cnf

flush   privileges;

在[mysqld]模块入手动增多

突显主服务的境况;

10 log-bin=mysql-bin
11 log-slave-updates=true #手动增添,开启从日记
12 server-id=11

 show   master  status;

[root@master ~]# systemctl restart mariadb

牢牢记住file 及position地点的字符串,在布署从服务时候会用到。

[root@master ~]# mysql -uroot -p

于今,主 mysql 配置完毕,重启service mysqld   restart

给从服务器授权

3卡塔尔从mysql服务配置

MariaDB [(none)]> grant replication slave on *.* to
‘myslave’@’192.168.1.%’ identified by ‘123123’;
Query OK, 0 rows affected (0.00 sec)

MySQL安装时间同步器,yum  -y  install ntpdate

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.01 sec)

ntpdate  172.16.1.2      时间同步

MariaDB [(none)]> show master status;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000001 | 613 | | |
+——————+———-+————–+——————+
1 row in set (0.00 sec)

配备mysql目录下的 my.cnf文件

安顿从服务器

在其间加多

[root@slave ~]# yum -y install mariadb-*

[mysqld]

[root@slave ~]# vim /etc/my.cnf

relay-log=relay-log-bin                                     #
传递日志,前缀为 relay-log-bin

10 relay-log=relay-log-bin
11 relay-log-index=slave-relay-bin.index
12 server-id=12 #着力服务器的 server-id  不可能平等!

relay-log-index=slave-relay-bin.index             # 传递日志的目录文件

[root@slave ~]# systemctl restart mariadb
[root@slave ~]# mysqladmin -uroot password 123123
[root@slave ~]# mysql -uroot -p123123

log-bin=mysql-bin                                          
 #张开二进制日志

MariaDB [(none)]> change master to
-> master_host=’192.168.1.46′, 
-> master_port=3306,
-> master_user=’myslave’,
-> master_password=’123123′,
-> master_log_file=’mysql-bin.000001′,
-> master_log_pos=613;
Query OK, 0 rows affected (0.01 sec)

server-id =
12                                                  #服务器的ID ,那么些能够随意定,不过与主服务器要不等

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)

重启服务   service  mysqld restart

MariaDB [(none)]> show slave statusG;
*************************** 1. row
***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.46
Master_User: myslave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 613
Relay_Log_File: relay-log-bin.000002
Relay_Log_Pos: 529
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 613
Relay_Log_Space: 821
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 11
1 row in set (0.00 sec)

登录mysql,   mysql   -uroot   -p123456  

透过查阅 slave  状态,确定保证 Slave_IO_Running: Yes Slave_SQL_Running:
Yes

change  master  to  master_host
=’172.16.1.2′,master_user=’myslave’,master_password=’123456′,master_log_file=’此处为主服务show 
master 命令展现的 file’,master_log_pos=’此处为主服务show  master
命令展现的 pos”;

在 MySQL  主服务器创制 test db数据库

此处 master_host =’172.16.1.2′,为主mysql的ip

[root@master ~]# mysql -uroot -p123123

start   slave;                       #拉开从劳动

MariaDB [(none)]> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| test |
| testdb |
+——————–+
5 rows in set (0.00 sec)

show slave statusG;         #呈现从劳动景况

在从服务器查看是或不是数据同步

如果

[root@slave ~]# mysql -uroot -p123123

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

MariaDB [(none)]> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| test |
| testdb |
+——————–+
5 rows in set (0.00 sec)

两项为yes,则意味着运行从劳动成功。

从服务器复制了主服务器上的数据库,主从复制成功。

如果Slave_IO_Running: No

 

兴许的主题材料一是主服务和从服务的server-id,不可能为重新;二是授权时必然要标准。grant  
replication slave   on  *.*  to  ‘myslave’@’172.16.1.12’    
identified   by  ‘123456’;

注意:

那边172.16.1.12为从服务器的ip

若在 从服务器 start slave; 之后察觉 Slave_IO_Running: No
、Slave_SQL_Running: Yes ,则
需要先 stop slave; 重新 change master to …; 再 start slave;

4卡塔尔(英语:State of Qatar)以上两步达成了mysql主从复制,大家要促成主主,也正是两台mysql
,豆蔻梢头台既是主,也是从,另后生可畏台既是主也是从,所以大家依照地点的配置在两台mysql上做反而的从主配置。

主mysql上,做从构造 

配置mysql目录下的 my.cnf文件

在里头增添

[mysqld]

relay-log=relay-log-bin                                     #
传递日志,前缀为 relay-log-bin

relay-log-index=slave-relay-bin.index             # 传递日志的目录文件

log-bin=mysql-bin                                          
 #敞开二进制日志

重启服务   service  mysqld restart

登录mysql,   mysql   -uroot   -p123456  

change  master  to  master_host
=’172.16.1.12′,master_user=’myslave’,master_password=’123456′,master_log_file=’此处为主服务show 
master 命令展现的 file’,master_log_pos=’此处为主服务show  master
命令展现的 pos”;

发表评论

电子邮件地址不会被公开。 必填项已用*标注