Liunx系统配置MySQL主从复制

Liunx系统配置MySQL主从复制

一、安装Mysql

1、下载Mysql安装包

# Mysql下载地址
https://downloads.mysql.com/archives/community/

# Mysql版本按需选择 
Mysql社区版
Msql版本号:5.7.37 
安装包由Red Hat制作 
适用系统 Oracle Linux 7

# 我的安装包
https://www.aliyundrive.com/s/pQzCeCfRGE5 提取码: 94wb

# Product Version: 
5.7.37

# Operating System:
Red Hat Enterprise Linux / Oracle Linux

# OS Version:
Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit)

# RPM Bundle
mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar

按需选择版本号

2、安装Mysql

# 转载教程
https://blog.csdn.net/xhmico/article/details/125197747

# 创建 Mysql目录,主要是为了存放Mysql的安装文件
mkdir mysql
# 上传文件

在这里插入图片描述

# 在当前目录下(mysql)下创建一个 mysql-5.7.37 文件夹
mkdir mysql-5.7.37

# 解压安装包到该目录下
tar -xvf mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar -C mysql-5.7.37

在这里插入图片描述

# 在安装执行 rpm 安装包之前先下载 openssl-devel 插件,因为 mysql 里面有些 rpm 的安装依赖于该插件。
yum install openssl-devel

# 安装完该插件之后,依次执行以下命令安装这些 rpm 包
1、rpm -ivh mysql-community-common-5.7.37-1.el7.x86_64.rpm

2、rpm -ivh mysql-community-libs-5.7.37-1.el7.x86_64.rpm
# 出现异常:https://blog.csdn.net/qq_35155680/article/details/115267192
# 出现异常:https://blog.csdn.net/weixin_46535927/article/details/123253112
# 解决办法运行: yum remove mysql-libs 

3、rpm -ivh mysql-community-libs-compat-5.7.37-1.el7.x86_64.rpm
# 出现异常:https://blog.csdn.net/weixin_43357860/article/details/118369751
# 解决办法运行: yum install compat-openssl10

4、rpm -ivh mysql-community-devel-5.7.37-1.el7.x86_64.rpm

5、rpm -ivh mysql-community-client-5.7.37-1.el7.x86_64.rpm
# 出现异常:https://blog.csdn.net/tcmmx1993/article/details/113699456
# 解决办法运行: sudo yum install libncurses*

6、rpm -ivh mysql-community-server-5.7.37-1.el7.x86_64.rpm
# 出现异常:https://blog.csdn.net/tcmmx1993/article/details/113699456
# 出现异常:https://blog.csdn.net/james112496/article/details/123338883
# 解决办法运行:yum install perl

# 安装完成

3、启动Mysql

# 启动 MySQL 服务
systemctl start mysqld

# 重启 MySQL 服务
systemctl restart mysqld

# 关闭 MySQL 服务
systemctl stop mysqld

# rpm 安装 MySQL 会自动生成一个随机密码,可在 /var/log/mysqld.log 这个文件中查找该密码
cat /var/log/mysqld.log

在这里插入图片描述

# 连接 MySQL 
mysql -u root -p
# 进入 Mysql成功则代表安装Mysql已成功

在这里插入图片描述

# 初始进去必须先修改密码才能操作Mysql
# 初始化密码步骤
1、修改密码难度不修改你输入一些奇奇怪怪的或者英文字母都不允许
set global validate_password_policy=0;
2、修改root账号密码
ALTER  USER  'root'@'localhost'  IDENTIFIED BY 'testroot';
# 退出测试一下是否成功,重新进入这个界面则为成功

在这里插入图片描述

# 创建Mysql用户
1、mysql 8.0 以下
create user 'clone'@'%' IDENTIFIED BY 'testroot';
2、mysql 8.0
create user 'clone'@'%' IDENTIFIED WITH mysql_native_password BY 'testroot';

# 创建完用户之后还需要给用户分配权限,这里我将 root 这个用户分配了所有的权限
grant all on *.* to 'clone'@'%';

# 进入数据库mysql
show databases;

# 进入mysql表
use mysql;

# 查看用户表权限
select Host, User,'pwd' from user;

# 修改用户权限
update user set Host='%' where User='root';

4、配置主从复制

# 转载链接
https://blog.csdn.net/m0_62473957/article/details/124140928

# Master的my.cnf配置
[mysqld]
port=9572
# MyISAM表用于索引块的缓冲区大小,可以被所有线程所共享,默认值是8388608(即8M),
# 它是对MyISAM表性能影响最大的一个参数,如果数据库存储引擎为InnoDB类型,这个参数是无效的。
# 可以通过增大这个值,以便索引更好的处理所有读和多写操作。
key_buffer_size=16M
# 表示一个数据包的最大大小,或任何生成的/中间字符串,或任何mysql_stmt_send_long_data() API 函数传递的参数。
# 数据包消息的缓冲区被初始化为net_buffer_length的字节(net_buffer_length默认值为16384:16KB,最大可以设置为1048576:1M),
# 但是在需要的时候可以增长到max_allowed_packet字节,这个参数的默认值是4M,在接收一些大的数据包时可能会出现错误,
# 最大可以设置为1GB。当你通过修改这个变量的值更改消息缓冲区的大小时,如果客户端程序允许的话,建议在客户端也修改缓冲区的大小。
# 在客户端库,默认的max_allowed_packet是1GB,但是个人的客户端可能会重写这个值,例如,mysql和mysqldump分别是16 MB和24 MB。
# 可以通过在命令行设置或在配置文件中修改max_allowed_packet参数来更改客户端的值,
# 需要注意的是:在session会话级别中,这个变量是只读的。 
max_allowed_packet=8M
# sql_mode是一组语法校验规则
max_connections=4190

# Master的唯一Id
server-id=1
# Master的日志文件名称
log-bin=mysql-bin
# 设置哪些数据库不需要同步 这些都是创建数据库时自带的所以不同步 简单讲就是除了这四个数据库以外其他的数据库都将进行同步
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=performance_schema
replicate-ignore-db=sys

# Slave的my.cnf配置
[mysqld]
port=9572
key_buffer_size=16M
max_allowed_packet=8M
max_connections=4190

# Slave的唯一Id
server-id=2
# Slave的日志文件名称
relay-log=relay-log-bin

# 配置完成后进入Mysql

在这里插入图片描述

# 以下操作都是基于进入Mysql以后使用

# 创建同步账号(Master和slave都需要同时操作)
create user 'clone'@'%' IDENTIFIED BY 'testroot';

# 修改权限(Master和slave都需要同时操作)
update user set Host='%' where User='clone';

# 给Master给slave的账号权限(Master需要操作)
grant replication slave,replication client on *.* to 'clone'@'%' identified by 'testroot';

# 查看Mysql日志文件(Master需要操作)
show master status;
# 查看 日志文件名称的节点
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000057 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

# 链接Master(Slave需要操作)
change master to master_host='192.168.1.101',master_port=9572,master_user='clone',master_password='testroot',master_log_file='mysql-bin.000056',master_log_pos=602;
start slave;

# Master的日志文件名称
master_log_file
# Master的日志文件同步节点
master_log_pos
# Master的IP
master_host
# Master的端口
master_port
# Master的同步账号
master_user
# Master的同步账号的密码
master_password

# 查看主从复制是否正常运行(Slave需要操作)
show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.101
                  Master_User: clone
                  Master_Port: 9572
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000057
          Read_Master_Log_Pos: 154
               Relay_Log_File: relay-log-bin.000005
                Relay_Log_Pos: 367
        Relay_Master_Log_File: mysql-bin.000057
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 154
              Relay_Log_Space: 738
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
                  Master_UUID: 2aec19aa-2a07-11ed-ba91-000c29c679c7
             Master_Info_File: /var/lib/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set:
            Executed_Gtid_Set:
                Auto_Position: 0
         Replicate_Rewrite_DB:
                 Channel_Name:
           Master_TLS_Version:
1 row in set (0.00 sec)

# 下面两个都为Yes就表示主从链接成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
# 如果出现异常使用 
show slave status\G; 
# 在Slave上观察下面的这些出现给出的错误信息
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kevin-Pig

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值