MySQL复制环境搭建

node-current node-current

本文通过 yum 方式部署 Mysql 数据库的复制环境,其他方式参考【MySQL环境部署(5.7+8.0)(Win+Linux)】。

1 环境准备

根据一主一从或多从准备服务器数量。

每台虚拟机上需要安装好 MySQL ,主从数据库版本一致。

主机名 IP OS mysql version
mysql80-master 192.168.2.80 Centos 7.8 Mysql 8.0.31
mysql80-slave01 192.168.2.81 Centos 7.8 Mysql 8.0.31
mysql80-slave02 192.168.2.82 Centos 7.8 Mysql 8.0.31

说明:前面讲过如何克隆一台CentOS。可以在一台CentOS上安装好MySQL,进而通过克隆的方式复制出1台包含MySQL的虚拟机。

注意:克隆的方式需要修改新克隆出来主机的:1.MAC地址 2.hostname 3.IP 地址 4.UUID

此外,克隆的方式生成的虚拟机 ( 包含 MySQL Server ),则克隆的虚拟机 MySQL Server 的 UUID 相同,必须修改,否则在有些场景会报错。比如报如下的错误:

mysql> show slave status\G
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have
equal MySQL server UUIDs; these UUIDs must be different for replication to work.

修改 MySQL Server 的 UUID 方式:

vim /var/lib/mysql/auto.cnf
systemctl restart mysqld

2. Mysql8.0安装

2.2.1 获取rpm包

通过yum在线安装。

根据 https://dev.mysql.com/downloads/repo/yum 获取最新rpm包。

# 下载安装MySQL的rpm包,截止目前rpm版本是el7-7
wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
yum -y localinstall mysql80-community-release-el7-7.noarch.rpm

2.2.2 安装配置MySQL Server

在服务器三个节点安装 mysql server。

2.2.1 安装数据库

yum install -y mysql-community-server

2.2.2 初始化数据库

# 初始化密码
[root@mysql80-01 ~]# mysqld --initialize --user=mysql
[root@mysql80-01 ~]# cat /var/log/mysqld.log
2022-10-08T15:29:20.937483Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.30) initializing of server in progress as process 55360
2022-10-08T15:29:20.966525Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-10-08T15:29:21.362763Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-10-08T15:29:23.216780Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: #uv._rfYp4T4
#首次登录,启动服务,登录输入临时密码
[root@mysql80-01 ~]# systemctl start mysqld
[root@mysql80-01 ~]# mysql -uroot -p
#修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
Query OK, 0 rows affected (0.01 sec)

2.2.3 远程登陆

# 如果不设置远程登录,管理服务器登录节点会报错
Shell.connect: Host '192.168.2.80' is not allowed to connect to this MySQL server (MySQL Error 1130)
#允许远程登陆
use mysql;
select Host,User from user;
update user set host = '%' where user ='root';
flush privileges;
#`%`是个 通配符 ,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。
# 如果`Host=%`,表示所有IP都有连接权限。生产禁用。

2.2.4 兼容老版本验证

当用老版本 mysql 的客户端连接 mysql 8 服务器时,可能报以下错误:

ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /home/mysql/mysql-5.6.14/lib/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

可以使用两个方法解决此问题。

  • 第一种方法是在配置文件中设置default_authentication_plugin='mysql_native_password',然后重启mysql服务器使之生效。default_authentication_plugin是只读系统变量,不能动态修改。
  • 第二种方法是在创建用户时,使用兼容新老版本的认证方式,例如:
create user 'slave'@'%' identified with mysql_native_password by 'slave';
flush privileges;

通过以下查询可以得到用户所对应的认证插件:

mysql> select host,user,plugin from mysql.user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | slave            | mysql_native_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)

3 防火墙

# 1、各节点关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 2、或放行端口
	# 查看开放的端口号
    firewall-cmd --list-all
    # 设置开放的端口号
    firewall-cmd --add-service=http --permanent
    firewall-cmd --add-port=3306/tcp --permanent
    # 重启防火墙
    firewall-cmd --reload

4. 禁用Selinux

#所有主机禁用Selinux
[root@mysql80-master ~]# cat /etc/sysconfig/selinux
SELINUX=disabled

5. Hosts

#所有主机添加hosts解析
[root@mysql80-master ~]# cat /etc/hosts
....
192.168.2.80	mysql80-master
192.168.2.81	mysql80-slave01
192.168.2.82	mysql80-slave01

扫码关注公众号,获取最新发布

posted on 2023-11-11 17:06  一介IT  阅读(62)  评论(0)    收藏  举报

导航