第十四周作业

#### 1 MariaDB主从复制原理 

1.数据更新,将其写入bin-log文件,bin-log是数据的二进制文件,记录了所有sql语句。

2.我们的目标就是把主数据库的bin-log文件的sql语句复制过来。通过slave服务线程保存在中继日志

3.让其在从数据的relay-log重做日志文件中再执行一次这些sql语句即可。

#### 2 MariaDB一主一从架构构建

服务器 A:192.168.242.130

服务器B:192.168.242.131

1.查看是否已安装Mariadb:rpm -qa | grep mariadn

2.开始安装:yum install -y mariadb mariadb-server

  copy配置文件并覆盖:cp /usr/share/mysql.my-huge.cnf /etc/my.cnf

3.启动mariadb服务:systemctl start  mairadb

4.配置Mariadb主从

修改my.cnf配置文件,设置server-id,master节点不需要修改,默认为1

slave节点修改为2,并且重启slave节点:systemctl restart mariadb

在master节点上建立主从复制用户并授权:在master节点上登录mariadb:mysql -uroot -      proot

GRANT REPLICATION SLAVE ON *.*{所有权限} TO 'slave'@'%'{用户名为slave,%为任意地址} identified by 'slave';

查询master的状态,看是否配置成功,命令:show master status

5.在slave节点上指定master的信息和binlog文件

命令语法: 

CHANGE MASTER TO 

MASTER_HOST='master的IP',MASTER_USER='master授权的用户',MASTER_PASSWORD='master授权用户的密码',MASTER_LOG_FILE='master的binlog文件',MASTER_LOG_POS=binlog起始位置;

PS:注意语法逗号前后不要用空格

在slave节点登录mariadb:mysql -uroot -proot

执行命令:

CHANGE MASTER TO 

MASTER_HOST='192.168.132.65',MASTER_USER='slave',MASTER_PASSWORD='slave',MASTER_LOG_FILE='mysql-bin.000016',MASTER_LOG_POS=1254;

执行成功之后需要重启slave,否则Slave_IO_Running和Slave_SQL_Running显示为No

6.重启

7.重新查看slave状态,Slave_IO_Running和Slave_SQL_Running已变为Yes

命令:show slave statusG

 

#### 3 MariaDB级联复制

 在中间的从服务器启用配置

【mysql】

server-id=18

log_bin

log_slave_updates

read-only

实现中间slave节点能将master的二进制日志在本地数据库进行更新,并且也同时更新本机的二进制,从而实现级联复制。

#### 4 MariaDB半同步复制

 默认情况下,Mysql的复制功能是异步,异步复制可以提供最佳的性能,主库把binlog日志发送给从库即结束,并不验证从库是否接收完毕。这意味着主服务器或从服务器端发送故障时,有可能从服务器没有接收到主服务器发送过来的binlog日志,这个就会造成主服务器和从服务器的数据不一样,甚至在恢复数据时发生丢失。

1.在master实现,启用半同步功能

2.在其他所有slave节点上都实现,启用半同步功能

3.在master上实现,创建数据库,立即成功

4.在master实现,创建数据库,立即成功

5.在所有slave节点实现,停止复制线程

6.在master实现,创建数据库,等待3s才能成功

7.在任意一个slave节点实现,恢复复制线程

8.在master实现,创建数据库,立即成功

#### 5 MariaDB高可用方案MHA

IP地址分别为192.168.130.132-134 

MHA 192.168.130.132

master 192.168.130.133

slave1 192.168.130.134

1.在管理节点上安装两个包

yum install -y mha4mysql-manager-.......

yum install -y mha4msqlpnode........

2.在所有MYSQL服务器上安装

yum install -y mha4mysql-node

3.在所有节点实现相互之间ssh key验证

ssh-keygen

ssh-copy-id 192.168.130.132

rsync -av .ssh 192.168.130.133:/root/

rsync -av .ssh 192.168.130.134:/root/

4.在管理节点建立配置文件

mkdir /etc/mastermha/

vim /etc/mastermha/app1.cnf

添上user=mhauser

ssh_user=root #用于实验远程ssh基于key的链接,访问二进制日志

repl_user=repluser #主从复制的用户信息

ping_interval=1 #健康性检查的时间间隔

master_ip_failover_script=/usr/local/bin/master_ip_failover

report_script=/usr/local/bin/sendmail.sh

check_repl_delay=0

[sercerl]

hostname=192.168.130.132

candidate_master=1

[server2]

hostname=192.168.130.133

candidate_master=1

master

[server3]

hostname=192.168.130.134

5.实现master

vim /etc/my.conf

[mysqld]

server_id=1

log-bin

skip_name_resolve=1

general_log

mysql>show master logs

mysql>grant replication slave on *.* to repluser@'192.168.130.%' identified by 'xuziran'

mysql>grant all on *.* to mhauser@'192.168.130.%' identified by 'xuziran';

6.配置vip

ifconfig eth0:1 192.168.130.100/24

7.实现slave

vim /etc/my.cnf

8.检查Mha的环境

masterha_check_ssh --conf /etc/mastermha/app1.cnf

masterha_check_repl --conf=/etc/mastermha/app.cnf

9.启动MHA

开启MHA,默认是前台运行

nohup masterha_manager --conf=/etc/mastermha/app1.cnf &> /dev/null

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/xuziran88/p/13595679.html