首页 > 基础资料 博客日记
Ubuntu20.04安装MySQL8主从
2024-05-15 17:00:03基础资料围观318次
文章Ubuntu20.04安装MySQL8主从分享给大家,欢迎收藏Java资料网,专注分享技术知识
📖 实验环境
主机名 | 系统版本 | 网络地址 |
---|---|---|
Master | Ubuntu20.04 | 192.168.100.20 |
Slave | Ubuntu20.04 | 192.168.100.21 |
🔨 下载安装包及初始化数据库
# 主从节点都需执行
## 下载并安装数据库
cd /opt
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
mv /opt/mysql-8.0.20-linux-glibc2.12-x86_64 /usr/local
cd /usr/local
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql-8.0.20
mkdir /usr/local/mysql-8.0.20/data
## 创建用户及用户组
groupadd mysql
useradd -g mysql mysql
chown -R mysql.mysql /usr/local/mysql-8.0.20
## 初始化数据库(记录临时密码)
cd /usr/local/mysql-8.0.20/
./bin/mysqld --user=mysql --lower-case-table-names=1 --basedir=/usr/local/mysql-8.0.20/ --datadir=/usr/local/mysql-8.0.20/data/ --initialize
🔨 修改配置文件
# Master节点(直接复制下面内容)
cat << /etc/my.cnf > EOF
[mysqld]
basedir=/usr/local/mysql-8.0.20
datadir=/usr/local/mysql-8.0.20/data
character-set-server=utf8
lower-case-table-names=1
default_authentication_plugin=mysql_native_password
# 主从复制-主机配置
# 主服务器唯一ID
server-id=1
# 启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=sys
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
# 如需要指定复制的数据库使用下方行(可设置多个)
# binlog-do-db=xxl_job
# 设置logbin格式
binlog_format=STATEMENT
EOF
# Slave节点(直接复制下面内容)
cat << /etc/my.cnf > EOF
[mysqld]
basedir=/usr/local/mysql-8.0.20
datadir=/usr/local/mysql-8.0.20/data
character-set-server=utf8
lower-case-table-names=1
default_authentication_plugin=mysql_native_password
# 主从复制-从机配置
# 从服务器唯一ID
server-id=2
# 启用中继日志
relay-log=mysql-relay
EOF
🔨 创建并启动Mysql服务
# 主从节点都需执行
## 建立Mysql服务
cp -a ./support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
## 启动、停止、重启
systemctl start mysql.service
systemctl restart mysql.service
systemctl stop mysql.service
## 创建软连接
ln -s /usr/local/mysql-8.0.20/bin/mysql /usr/bin
🔨 设置本地及远程登录密码
# 登录(使用临时密码)
mysql -uroot -p
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
# 退出,使用新密码登录
quit
mysql -uroot -p
# 修改root权限,增加远程连接(从服务器为了安全可以不必执行)
use mysql
update user set host ='%' where user='root';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
# 退出
quit
🔨 配置节点主从复制
-
检查防火墙
# 关闭主从数据库服务器防火墙或开放3306端口 # 这里以firewall为例 # 查看防火墙状态 systemctl status firewalld # 关闭防火墙 systemctl stop firewalld #往防火墙添加3306端口 firewall-cmd --add-port=3306/tcp --permanent #重新加载防火墙配置 firewall-cmd --reload
-
数据库测试是否可以访问
# 从数据库服务器测试主数据库 mysql -uroot -p -h<主服务器IP> -P3306
-
主数据库创建用户slave并授权
# 登录 mysql -uroot -p # 创建用户 create user 'slave'@'%' IDENTIFIED WITH mysql_native_password by 'password'; grant replication slave on *.* to 'slave'@'%'; # 刷新权限 flush privileges;
-
从数据库验证slave用户是否可用
# slave节点执行 mysql -uslave -p -h<主服务器IP> -P3306
-
开始配置主从
# master节点 # 主数据库查询服务ID及Master状态 # 登录 mysql -uroot -p # 查询server_id是否可配置文件中一致 show variables like 'server_id'; # 若不一致,可设置临时ID(重启失效) set global server_id = 1; # 查询Master状态,并记录 File 和 Position 的值 show master status; # 注意:执行完此步骤后退出主数据库,防止再次操作导致 File 和 Position 的值发生变化 ------------------ # slave节点 # 登录 mysql -uroot -p # 查询server_id是否可配置文件中一致 show variables like 'server_id'; # 若不一致,可设置临时ID(重启失效) set global server_id = 2; # 设置主数据库参数 change master to master_host='主数据库IP',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000002',master_log_pos=156; # 开始同步 start slave; # 若出现错误,则停止同步,重置后再次启动 stop slave; reset slave; start slave; # 查询Slave状态 show slave status\G # 查看是否配置成功 # 查看参数 Slave_IO_Running 和 Slave_SQL_Running 是否都为yes,则证明配置成功。若为no,则需要查看对应的 Last_IO_Error 或 Last_SQL_Error 的异常值。
-
测试
# 通过工具连接主从数据库或者在服务器连接。 # 注意:主数据库的配置文件中配置了需要同步的数据库,因此只会同步配置的数据库,不配置则同步全部。 # 在主数据库创建数据库test create database test; # 从数据库查看 show databases; # 在主数据库创建表 use test; create table t_user(id int, name varchar(20)); # 插入数据 insert into t_user values(1, 'C3Stones'); # 在从数据库查看 use test; select * from t_user;
文章来源:https://www.cnblogs.com/ronnybox/p/18194011
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: