翼度科技»论坛 编程开发 mysql 查看内容

Ubuntu20.04安装Mysql8主从

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
Ubuntu20.04安装Mysql8主从

一.主数据库安装

1.下载安装包并初始化数据库
  1. # 进入目录
  2. cd /opt
  3. # 下载安装包
  4. wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
  5. # 解压
  6. tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
  7. # 拷贝到/usr/local
  8. mv /opt/mysql-8.0.20-linux-glibc2.12-x86_64 /usr/local
  9. # 进入/usr/local
  10. cd /usr/local
  11. # 修改名称为mysql-8.0.20
  12. mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql-8.0.20
  13. # 创建存放数据文件夹
  14. mkdir /usr/local/mysql-8.0.20/data
  15. # 创建用户及用户组
  16. groupadd mysql
  17. useradd -g mysql mysql
  18. # 授权
  19. chown -R mysql.mysql /usr/local/mysql-8.0.20
  20. # 初始化数据库(记录临时密码)
  21. cd /usr/local/mysql-8.0.20/
  22. ./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
复制代码

2.修改配置文件
  1. # 配置my.cnf
  2. vi /etc/my.cnf
复制代码
  1. # 清空,使用下面内容
  2. [mysqld]
  3. basedir=/usr/local/mysql-8.0.20
  4. datadir=/usr/local/mysql-8.0.20/data
  5. character-set-server=utf8
  6. lower-case-table-names=1
  7. default_authentication_plugin=mysql_native_password
  8. # 主从复制-主机配置
  9. # 主服务器唯一ID
  10. server-id=1
  11. # 启用二进制日志
  12. log-bin=mysql-bin
  13. # 设置不要复制的数据库(可设置多个)
  14. binlog-ignore-db=sys
  15. binlog-ignore-db=mysql
  16. binlog-ignore-db=information_schema
  17. binlog-ignore-db=performance_schema
  18. # 设置需要复制的数据库(可设置多个)
  19. binlog-do-db=xxl_job
  20. binlog-do-db=nacos
  21. # 设置logbin格式
  22. binlog_format=STATEMENT
复制代码
3.创建并启动Mysql服务
  1. # 建立Mysql服务
  2. cp -a ./support-files/mysql.server /etc/init.d/mysql
  3. chmod +x /etc/init.d/mysql
  4. # 启动、停止、重启
  5. systemctl start mysql.service
  6. systemctl restart mysql.service
  7. systemctl stop mysql.service
  8. # 创建软连接
  9. ln -s /usr/local/mysql-8.0.20/bin/mysql /usr/bin
复制代码
  1. # 登录(使用临时密码)
  2. mysql -uroot -p
  3. # 修改密码
  4. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new password';
  5. # 退出,使用新密码登录
  6. quit
  7. mysql -uroot -p
  8. # 修改root权限,增加远程连接(从服务器为了安全可以不必执行)
  9. use mysql
  10. update user set host ='%' where user='root';
  11. ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'cquisse';
  12. flush privileges;
  13. # 退出
  14. quit
复制代码
二.从数据库安装

安装步骤和主数据库的安装步骤基本一样,但配置文件内容不同,以及不必开启远程连接。
  1. vi /etc/my.cnf
  2. #添加如下内容
复制代码
  1. [mysqld]
  2. basedir=/usr/local/mysql-8.0.20
  3. datadir=/usr/local/mysql-8.0.20/data
  4. character-set-server=utf8
  5. lower-case-table-names=1
  6. default_authentication_plugin=mysql_native_password
  7. # 主从复制-从机配置
  8. # 从服务器唯一ID
  9. server-id=2
  10. # 启用中继日志
  11. relay-log=mysql-relay
复制代码
三.配置主从复制

1.检查防火墙


  • 关闭主从数据库服务器防火墙或开放3306端口
    这里以firewall为例
    1. # 查看防火墙状态
    2. systemctl status firewalld
    3. # 关闭防火墙
    4. systemctl stop firewalld
    复制代码
    1. #往防火墙添加3306端口
    2. firewall-cmd --add-port=3306/tcp --permanent
    3. #重新加载防火墙配置
    4. firewall-cmd --reload
    复制代码
2.数据库测试是否已经可以访问
  1. # 从数据库服务器测试主数据库
  2. mysql -uroot -p -h<主服务器IP> -P3306
复制代码
3.主数据库创建用户slave并授权
  1. # 登录
  2. mysql -uroot -p
  3. # 创建用户
  4. create user 'slave'@'%' IDENTIFIED WITH mysql_native_password by 'password';
  5. # 授权
  6. grant replication slave on *.* to 'slave'@'%';
  7. # 刷新权限
  8. flush privileges;
复制代码

  • 从数据库验证slave用户是否可用
    1. mysql -uslave -p -h<主服务器IP> -P3306
    复制代码
4.开始配置主从


  • 主数据库查询服务ID及Master状态
    1. # 登录
    2. mysql -uroot -p
    3. # 查询server_id是否可配置文件中一致
    4. show variables like 'server_id';
    5. # 若不一致,可设置临时ID(重启失效)
    6. set global server_id = 1;
    7. # 查询Master状态,并记录 File 和 Position 的值
    8. show master status;
    9. # 注意:执行完此步骤后退出主数据库,防止再次操作导致 File 和 Position 的值发生变化
    复制代码
  • 从数据库中设置主数据库
    1. # 登录
    2. mysql -uroot -p
    3. # 查询server_id是否可配置文件中一致
    4. show variables like 'server_id';
    5. # 若不一致,可设置临时ID(重启失效)
    6. set global server_id = 2;
    7. # 设置主数据库参数
    8. 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;
    9. # 开始同步
    10. start slave;
    11. # 若出现错误,则停止同步,重置后再次启动
    12. stop slave;
    13. reset slave;
    14. start slave;
    15. # 查询Slave状态
    16. show slave status\G
    17. # 查看是否配置成功
    18. # 查看参数 Slave_IO_Running 和 Slave_SQL_Running 是否都为yes,则证明配置成功。若为no,则需要查看对应的 Last_IO_Error 或 Last_SQL_Error 的异常值。
    复制代码
  • 测试
      通过工具连接主从数据库或者在服务器连接。
      注意:主数据库的配置文件中配置了需要同步的数据库,因此只会同步配置的数据库,不配置则同步全部。
  1. # 在主数据库创建数据库test
  2. create database test;
  3. # 从数据库查看
  4. show databases;
  5. # 在主数据库创建表
  6. use test;
  7. create table t_user(id int, name varchar(20));
  8. # 插入数据
  9. insert into t_user values(1, 'C3Stones');
  10. # 在从数据库查看
  11. use test;
  12. select * from t_user;
复制代码
来源:https://www.cnblogs.com/blogof-fusu/p/17711895.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具