搭建Mysql主从架构

一、主从

1、备份的三种类型

  1. 热备份
  2. 逻辑备份
  3. 物理备份

二、集群

1、概述

高可用集群(HA)是指通过特殊软件,把独立的服务器连接起来,组成一个能够提供故障间切换功能的集群。

2、标准

可用性级别

年宕机时间

描述

99%

3.65天

基本可用系统

99.9%

8.76小时

可用系统

99.99%

52.6分钟

高可用系统

99.999%

5.3分钟

抗故障系统

99.9999%

32秒

容错系统

3、原理

replication可以实现将数据从一台数据库服务器(master)复制到多台数据库服务器。

4、描述

  1. slave端的io线程发送请求给master端的binlog dump线程。
  2. master端的binlog dump线程获取二进制日志信息(文件名和位置信息)发送给slave端的io线程。
  3. slave端的io线程获取到内容,依次写到slave端relaylog(中继日志)并把master端的binlog文件名和位置记录到master。info里头。
  4. slave端的sql线程检测到relaylog中的内容更新,就会解析relaylog中的更新内容,并执行这些操作,从而达到和master端数据一致

5、主从复制架构体系

(1)双机热备 主从复制

默认情况下master接受读写,从服务器只接受读。

 (2)级联复制

可以分担读的压力

中间服务器出现故障,就瘫痪了

(3)并联复制 ⼀主多从

解决单点故障

承担更多的读的压⼒

从服务器都从主服务器读取数据,master服务器压⼒⼤

 

(4)双主复制

看起来可以同时接收读写,实际运作中只有⼀台服务器在⼯作,另外⼀台只接受读

 

 6、编写脚本安装mysql服务

(1)主服务器

vim mysql.sh

#!/bin/bash
yum list installed |grep libaio

if [ $? ne 0 ]; then
   yum -y install libaio
fi

echo libaio yes
rm -rf /etc/my.cnf
echo remo my.cnf yes

tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
echo tar zx yes

cp -r ~/mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql
echo copy file to /usr/local/mysql   yes

mkdir /usr/local/mysql/mysql-files
echo mysql-files yes

grep mysql /etc/passwd

useradd -r -s /sbin/nologin mysql

chown mysql:mysql /usr/local/mysql/mysql-files
chmod 750 /usr/local/mysql/mysql-files

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/

/usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql8

sed -i '$aexport PATH=/usr/local/mysql/bin:$PATH' /etc/profile
source /etc/profile

(2)从服务器

[root@cong ~]# vim mysql.sh

#!/bin/bash
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-linux-glibc2.12-x86_64.tar

yum list installed |grep libaio

if [ $? ne 0 ]; then
   yum -y install libaio
fi

echo libaio yes
rm -rf /etc/my.cnf
echo remo my.cnf yes

tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
echo tar zx yes

cp -r ~/mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql
echo copy file to /usr/local/mysql   yes

mkdir /usr/local/mysql/mysql-files
echo mysql-files yes

grep mysql /etc/passwd

useradd -r -s /sbin/nologin mysql

chown mysql:mysql /usr/local/mysql/mysql-files

chmod 750 /usr/local/mysql/mysql-files

#/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/

#/usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql8

sed -i '$aexport PATH=/usr/local/mysql/bin:$PATH' /etc/profile

source /etc/profile

​

7、编写配置文件

(1)主服务器

[root@zhu ~]# vim /usr/local/mysql/my.cnf

[mysqld]

basedir=/usr/local/mysql/

datadir=/usr/local/mysql/data/

socket=/tmp/mysql.sock

port=3306

log-error=/usr/local/mysql/data/db01-master.err

log-bin=/usr/local/mysql/data/binlog

server-id=10

character-set-server=utf8mb4
[root@zhu ~]# chkconfig --add mysql8

[root@zhu ~]# chkconfig mysql8 on

[root@zhu ~]# chkconfig --list

(2)从服务器

[root@zhu ~]# vim /usr/local/mysql/my.cnf

[mysqld]

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

socket=/tmp/mysql.sock

port=3310

log-error=/usr/local/mysql/data/db01-slave.err

relay-log=/usr/local/mysql/data/relaylog

server-id=11

character_set_server=utf8mb4

8、重启服务、开机自启

[root@mysql001 ~]# service mysql8 restart

[root@mysql001 ~]# chkconfig --add mysql8

[root@mysql001 ~]# chkconfig mysql8 on

[root@mysql001 ~]# chkconfig

三、主从复制之数据同步

1、master服务器同步到slave服务器

(1)停⽤master服务器msyql服务

service mysql8 stop

(2)master删除/usr/local/mysql/data/auto.cnf 每安装⼀个mysql软件,data数据⽬录都会产⽣⼀个auto.cnf⽂件,⾥⾯是⼀个唯⼀性编号,相当于每个⼈的身份证编号。

[root@mysql001 ~]# ls

/usr/local/mysql/data/auto.cnf   /usr/local/mysql/data/auto.cnf
[root@mysql001 ~]# cat  /usr/local/mysql/data/auto.cnf

[auto]

server-uuid=f6421989-5330-11ef-974f-

000c29ce78bb

[root@mysql001 ~]# rm -rf /usr/local/mysql/data/auto.cnf

2、master和slave都安装rsync

yum -y install rsync

3、同步master中的data到slave对应位置

rsync -av /usr/local/mysql/data root@10.1.1.110:/usr/local/mysql/

4、启动主服务器和从服务器

[root@mysql001 ~]# service mysql8 start

[root@slave ~]# service mysql8 start

[root@mysql001 ~]#/usr/local/mysql/bin/mysql -P3310 -pZhang_Min_666

四、主从复制的实现

1、master创建授权账号

mysql> create user 'slave'@'10.1.1.%'

identified by 'slave_123';

Query OK, 0 rows affected (0.02 sec)
mysql> grant replication slave on *.* to

'slave'@'10.1.1.%';

Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;

 

2、在master中锁表,然后查看⼆进制⽂件和位置

mysql> flush tables with read lock;

 3、在从服务器中,使⽤change master to 指定主服务器,并实现数据同步。

[root@slave ~]# /usr/local/mysql/bin/mysql -p3310 -pZhang_Min_666

 

change master to master_host='10.1.1.100',

master_user='slave',

master_password='slave_123', master_port=3306,

master_log_file='binlog.000004',

master_log_pos=1092;

4、启动slave数据同步,查看状态

mysql> start slave;

mysql> show slave status\G

 

5、解锁文件

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

五、ssl⾮对称加密

1、获得远程master主机的公钥

mysql -uzhangmin -pabc_123 -h 192.168.71.166 -

P3306 --get-server-public-key



quit

2、登录slave服务器本地的数据库

mysql -pZhang_Min_666 -P3310

3、停⽤slave服务,重新设置slave服务

mysql> stop slave;

mysql> reset slave;

mysql> change master to

master_host='192.168.71.166',

master_user='zhangmin',

master_password='abc_123', master_port=3306,

master_log_file='binlog.000006',master_log_pos=866;

4、启动slave服务

mysql> start slave

mysql> show slave status\G

  • 18
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL主从复制是一种高可用性和可扩展性的解决方案,可以提高数据库系统的性能和可靠性。 以下是MySQL主从架构搭建的步骤: 1. 配置主服务器:在主服务器上,编辑MySQL配置文件,使其开启二进制日志功能。在my.cnf配置文件中添加以下内容: ``` [mysqld] log-bin=mysql-bin server-id=1 ``` 其中,log-bin参数表示开启二进制日志功能,server-id参数表示服务器的唯一ID号,一般设置为1。 2. 创建从服务器账户:在主服务器上,创建一个用于从服务器连接主服务器的账户,并授予REPLICATION SLAVE权限。可以使用以下命令创建账户: ``` CREATE USER 'slave'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'; ``` 其中,'slave'@'%'表示从服务器的IP地址,'password'是账户的密码。 3. 导出主服务器数据:在主服务器上,使用mysqldump命令导出数据库的数据,并将数据保存到一个.sql文件中。可以使用以下命令: ``` mysqldump -u root -p --all-databases --master-data > db.sql ``` 其中,--master-data参数会在导出的SQL语句中加入CHANGE MASTER TO语句。 4. 导入数据到从服务器:将导出的SQL文件拷贝到从服务器上,并使用以下命令导入数据: ``` mysql -u root -p < db.sql ``` 5. 配置从服务器:在从服务器上,编辑MySQL配置文件,设置server-id参数为一个唯一的ID号。可以使用以下命令: ``` [mysqld] server-id=2 ``` 6. 启动从服务器:在从服务器上启动MySQL服务,并使用以下命令连接到主服务器: ``` CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='slave', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4; ``` 其中,MASTER_HOST参数是主服务器的IP地址,MASTER_USER和MASTER_PASSWORD参数是之前创建的账户和密码,MASTER_LOG_FILE和MASTER_LOG_POS参数是在导出数据时自动生成的,可以在导出的SQL文件中找到。 7. 启动主从复制:在从服务器上,使用以下命令启动主从复制: ``` START SLAVE; ``` 至此,MySQL主从架构搭建完成了。从服务器会自动从主服务器同步数据,并且可以实现读写分离、负载均衡等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值