189 8069 5689

MySQL中怎么搭建主从高可用

MySQL 中怎么搭建主从高可用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

创新互联公司专业为企业提供琼中黎族网站建设、琼中黎族做网站、琼中黎族网站设计、琼中黎族网站制作等企业网站建设、网页设计与制作、琼中黎族企业网站模板建站服务,10年琼中黎族做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

1. mysql 下载

操作系统:CentOS 7.5

MySQL:mysql-5.7.29

  在 CentOS 中只用使用 wget 命令下载即可,下载完成后进行解压:

> wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
> tar -xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
mysql-community-embedded-devel-5.7.29-1.el7.x86_64.rpm
mysql-community-test-5.7.29-1.el7.x86_64.rpm
mysql-community-embedded-5.7.29-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.29-1.el7.x86_64.rpm
mysql-community-libs-5.7.29-1.el7.x86_64.rpm
mysql-community-client-5.7.29-1.el7.x86_64.rpm
mysql-community-server-5.7.29-1.el7.x86_64.rpm
mysql-community-devel-5.7.29-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm
mysql-community-common-5.7.29-1.el7.x86_64.rpm

2 安装

检查移除系统自带的mysql 

rpm -qa | grep mariadb
rpm -e mariadb-libs-5.5.41-2.el7_0.x86_64 --nodeps     # 如果有的话,使用这种方式移除

上面 MySQL 的安装包解压后有很多组件,一般不需要全部安装,挑常用的几个安装即可,并且要注意安装顺序:

rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.29-1.el7.x86_64.rpm

3 初始化

 mysqld --initialize --user=mysql # --user 是可选的参数,意思是创建一个名称是 mysql 的用户

初始化完成后,mysql 会给 root 用户创建一个临时的登录密码,登录进去后再对 root 用户的密码进行自定义修改,临时密码在 mysql 的日志中,默认路径是 /var/log/mysqld.log,一般在最后一行类似下面:

A temporary password is generated for root@localhost: hSQ&zl/3m?oF

使用系统方式启动 mysql,同时还把 mysql 的加入到系统自启动列表中:

systemctl start mysqld.service
systemctl status mysqld.service     # 检查是否启动成功

使用上面日志中的临时密码登录,登录后修改密码

mysql -uroot -p
set password=password('your_new_password');

为了让集群中的各个数据库节点能正常通信,需要关闭防火墙,线上环境需要在防火墙中放行 3306 的端口 

systemctl stop iptables      # iptables 防火墙
systemctl stop firewalld     # firewalld 防火墙,CentOS 自带
systemctl disable firewalld.service   # 彻底一点,从开机启动中禁用掉

4 配置主从

4.1 配置主库

修改主库的配置文件 /etc/my.cnf,增加以下配置:

# log_bin
server-id=1                          # 设置 server-id,每个数据库不能重复,必须
log_bin=mysql-bin                    # 指定 binlog 的名称,相当于开启 bin log, 必须
sync-binlog=1                        # 开始刷新 bin log 到磁盘,每次有更新事务,完成后都要马上刷新到磁盘
binlog-ignore-db=performance_schema  # binlog 中忽略的库
binlog-ignore-db=information_schema
binlog-ignore-db=sys
#binlog-do-db=lagou                   # 可以使用这个参数指定只同步那个库

保存退出后,重启数据库:

systemctl restart mysqld

设置哪些 ip 的 slave 可以从本 master 同步 binlog。

grant replication slave on *.* to 'root'@'%' identified by 'root';    # 复制授权
grant all privileges on *.* to 'root'@'%' identified by 'root';
flush privileges;                                                     # 刷新权限

在查看一下数据库作为 master 的一些状态

mysql> show master status;
+------------------+----------+--------------+-------------------------------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                          | Executed_Gtid_Set |
+------------------+----------+--------------+-------------------------------------------+-------------------+
| mysql-bin.000001 |      869 |              | performance_schema,information_schema,sys |                   |
+------------------+----------+--------------+-------------------------------------------+-------------------

重点关注当前使用的 bin log 文件名称以及 bin log 的写入位置。

4.2 配置从库

修改每个从库的 /etc/my.cnf,添加一下内容:

server-id=3   # 注意一个集群环境中的 id 不能冲突
relay_log=mysql-relay-bin
# read_only=1    # 开启只读

重启数据库,然后登陆到 mysql 中做一些相关配置:

show slave status;      # 查看 salve 状态,如果已经是开启状态,需要先 stop slave;修改配置后,在 start slave;
# 设置主库的 bin log 信息(用到了主库中当前 bin log 的文件名称以及当前写位置)
change master to master_host='192.168.0.11',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=869;
show slave status;    # 查看从库状态, 第一次配置,此时连接 master 的状态应该是 No
start slave;          # 开启 salve 模式

看完上述内容,你们掌握MySQL 中怎么搭建主从高可用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


当前标题:MySQL中怎么搭建主从高可用
转载注明:http://cdxtjz.com/article/igcsho.html

其他资讯