首页 > 基础资料 博客日记

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

img

🔨 修改配置文件

# 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

🔨 配置节点主从复制

  1. 检查防火墙

    # 关闭主从数据库服务器防火墙或开放3306端口
    # 这里以firewall为例 
    
    # 查看防火墙状态
    systemctl status firewalld
    # 关闭防火墙
    systemctl stop firewalld
    
    #往防火墙添加3306端口
    firewall-cmd --add-port=3306/tcp --permanent
    #重新加载防火墙配置
    firewall-cmd --reload 
    
  2. 数据库测试是否可以访问

    # 从数据库服务器测试主数据库
    mysql -uroot -p -h<主服务器IP> -P3306
    
  3. 主数据库创建用户slave并授权

    # 登录
    mysql -uroot -p
    
    # 创建用户
    create user 'slave'@'%' IDENTIFIED WITH mysql_native_password by 'password';
    grant replication slave on *.* to 'slave'@'%';
    
    # 刷新权限
    flush privileges;
    
  4. 从数据库验证slave用户是否可用

    # slave节点执行
    mysql -uslave -p -h<主服务器IP> -P3306
    
  5. 开始配置主从

    # 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 的异常值。 
    
  6. 测试

    # 通过工具连接主从数据库或者在服务器连接。
    # 注意:主数据库的配置文件中配置了需要同步的数据库,因此只会同步配置的数据库,不配置则同步全部。
    
    # 在主数据库创建数据库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/blogof-fusu/p/17711895.html


文章来源:https://www.cnblogs.com/ronnybox/p/18194011
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云