一.下载并解压安装MySQL压缩包,采用5.7.16版本
##1. 使用 wget 命令通过 URL 下载 MySQL 5.7.35 版本适用于 Linux 的安装包mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz。以下是使用 wget 命令下载该安装包
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
2. 要解压 mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz 文件,您可以使用以下命令:
tar -zxvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
3. 重复解压两次解压完成之后重命名为mysql3306+
mysql3307
4. 创建3306和3307对应的 .cnf 文件
4.1 mysql3306.cnf
vim /etc/mysql3307.cnf
vim /etc/mysql3306.cnf
[mysqld]
user=mysql
pid-file=/usr/local/mysql3306/data/mysql3306.pid
socket=/var/run/mysql3306/mysqld.sock
port=3306
basedir=/usr/local/mysql3306
datadir=/usr/local/mysql3306/data
server-id=1006
log-bin=mysql-bin
gtid-mode=OFF
enforce-gtid-consistency=false
max_connections=200
symbolic-links=0
log-error=/usr/local/mysql3306/data/mysql3306.err
explicit_defaults_for_timestamp=1
binlog_do_db=swis_prod
[client]
port=3306
socket=/var/run/mysql3306/mysqld.sock
4.2 mysql3307.cnf
vim /etc/mysql3307.cnf
[mysqld]
user=mysql
pid-file=/usr/local/mysql3307/data/mysql3307.pid
socket=/var/run/mysql3307/mysqld.sock
port=3307
basedir=/usr/local/mysql3307
datadir=/usr/local/mysql3307/data
server-id=1007
log-bin=mysql-bin
gtid-mode=OFF
enforce-gtid-consistency=false
max_connections=200
symbolic-links=0
log-error=/usr/local/mysql3307/data/mysql3307.err
explicit_defaults_for_timestamp=1
relay-log=relay-bin
read_only=1
[client]
port=3307
socket=/var/run/mysql3307/mysqld.sock
5.创建用户组及用户和密码
groupadd mysql
useradd -g mysql mysql
5.1 授权用户
chown -R mysql.mysql /usr/local/mysql3306
chown -R mysql.mysql /usr/local/mysql3307
6.初始化基础信息,最后一行后面会有个随机的初始密码保存下来一会登录要用(如果忘记了就删掉data重新初始化)
6.1 进入mysql3306的bin目录执行
/usr/local/mysql3306/bin/mysqld --defaults-file=/etc/my3306.cnf --user=root --basedir=/usr/local/mysql3306 --datadir=/usr/local/mysql3306/data --initialize
6.2 临时密码记得保存
7. 通过mysqld_safe启动mysql,进行密码设置以及远程连接
/usr/local/mysql3306/bin/mysqld_safe --defaults-file=/etc/my3306.cnf --basedir=/usr/local/mysql3306 --datadir=/usr/local/mysql3306/data
71 登录mysql3306
/usr/local/mysql3306/bin/mysql -u root -p --socket=/var/run/mysql3306/mysqld.sock
提示
–socket相关错误需要对/var/run/mysql3306/mysqld.sock目录进行mysql用户的授权。并删除data目录重新执行初始化和启动命令
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket’/tmp/mysql.sock’ (2)
sudo chown mysql:mysql /var/run/mysql3306/mysqld.sock
sudo chmod 700 /var/run/mysql3306/mysqld.sock
确保.cnf中的配置都相对于
[mysqld]
socket=/var/run/mysql3306/mysqld.sock
[client]
socket=/var/run/mysql3306/mysqld.sock
7.2 登录mysql
输入刚刚初始化时生成的密码
更改root用户密码, 注意语句后的; 执行语句忘记写了 可以补个空的;回车也可以将语句执行
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
flush privileges;
use mysql;
update user set host='%' where user = 'root';
flush privileges;
8. 安装并配置3307执行以上重复的逻辑保证端口不冲突
安装完成之后查询服务是否正常运行
9.配置MySQL主从复制,将3306设置为主库,3307设置为从库
- 确保主库(3306)的配置 在主库的mysql3306.cnf,确保以下设置:
[mysqld]
log-bin=mysql-bin # 开启二进制日志
server-id=1 # 主库的唯一ID`
- 重启主库服务使配置生效。 创建复制用户: 在主库上执行以下SQL命令,创建一个用于复制的用户,并赋予相应的权限
CREATE USER 'read'@'%' IDENTIFIED BY 'read';
GRANT REPLICATION SLAVE ON *.* TO 'read'@'%';
FLUSH PRIVILEGES;
查看主库是否开启共享数据功能
SHOW MASTER STATUS;
SHOW MASTER STATUS\G;
- 配置从库(3307在从库的my.ini或my.cnf配置文件中,确保以下设置:
[mysqld]
log-bin=mysql-bin # 开启二进制日志
server-id=2 # 从库的唯一ID,确保与主库不同
relay-log=relay-bin # 中继日志`
重启从库服务使配置生效。 设置从库复制主库: 在从库上执行以下SQL命令,设置复制主库的相关参数:
CHANGE MASTER TO
MASTER_HOST=‘主库IP’,
MASTER_USER=‘rep’,
MASTER_PASSWORD=‘123456’,
MASTER_LOG_FILE=‘主库的二进制日志文件名’,
MASTER_LOG_POS=日志位置;
这里的主库的二进制日志文件名和日志位置
可以从主库上通过
SHOW MASTER STATUS;命令获取。
CHANGE MASTER TO
MASTER_HOST='192.168.202.131',
MASTER_USER='read',
MASTER_PASSWORD='read',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=2217;
- 启动从库复制:
在从库上执行以下SQL命令,开始复制主库的数据:
START SLAVE;
监控复制状态:
在从库上执行以下SQL命令,查看复制状态:
SHOW SLAVE STATUS\G;
确保Slave_IO_Running和Slave_SQL_Running的值都是Yes,表示复制正在正常运行。
10错误提示
1.ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.
错误 ERROR 1794 (HY000): Slave is not configured or failed to initialize
properly. You must at least set --server-id to enable either a master
or a slave. 指出 MySQL
服务器作为复制从服务器(slave)没有被正确配置,或者初始化失败了。这个错误通常发生在尝试设置或启动复制时,但相关的配置参数没有设置或设置不正确。
主服务器(master)和每个从服务器(slave)都需要一个唯一的 server-id。
查看当前实例的server_id
show variables like 'server_id';
2.ERROR 3021 (HY000): This operation cannot be performed with a running slave io thread; run STOP SLAVE IO_THREAD FOR CHANNEL ‘’ first.
MySQL 发现有一个正在运行的从服务器 IO 线程(slave IO
thread)。在这种情况下,如果要执行涉及复制的操作,你需要先停止从服务器的 IO 线程。
登录到 MySQL 数据库服务器上,并使用管理员权限连接到数据库。 执行以下命令来停止从服务器的 IO 线程:
停止对应的io线程和开启对应的io线程
START SLAVE IO_THREAD;
START SLAVE SQL_THREAD;
STOP SLAVE IO_THREAD;
STOP SLAVE SQL_THREAD;