iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >CentOS7下RPM模式搭建MySQL5.7.28主从复制
  • 908
分享到

CentOS7下RPM模式搭建MySQL5.7.28主从复制

CentOS7下RPM模式搭建MySQL5.7.28主从复制 2021-05-10 11:05:52 908人浏览 才女
摘要

一、配置文件: 主库(192.168.128.111): [client] port=3306 Socket=/approot/data/Mysql/mysql.sock default-character-set=utf8 [mys

CentOS7下RPM模式搭建MySQL5.7.28主从复制

一、配置文件:

主库(192.168.128.111):

[client]
port=3306
Socket=/approot/data/Mysql/mysql.sock
default-character-set=utf8

[mysql]
port=3306
# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id=111
# 只能用IP地址检查客户端的登录,不用主机名
# skip_name_resolve=0
# 设置3306端口
port=3306
# 设置mysql数据库的数据的存放目录
#datadir=/var/lib/mysql
#datadir=/approot/data/mysql/data
datadir=/approot/data/mysql
log-error=/var/log/mysqld.log
#socket=/var/lib/mysql/mysql.sock
socket=/approot/data/mysql/mysql.sock
pid-file=/var/run/mysqld/mysqld.pid

# 支持符号链接
symbolic-links=0
# 允许最大连接数
max_connections=500
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
character-set-server=utf8
collation-server=utf8_general_ci
# SQL模式
sql_mode=STRICT_TRANS_TABLES,ANSI_QUOTES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO
# 设置时间戳的默认属性
explicit_defaults_for_timestamp=true
# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
# 每个innodb表数据单独文件保存
innodb_file_per_table=ON
# 增加每个进程的可打开文件数量
open-files-limit=6000

######################### 主从复制设置 #############################
# 开启mysql binlog功能
log-bin=mysql-bin.log
# binlog记录内容的方式,记录被操作的每一行
binlog_fORMat=MIXED
# 减少记录日志的内容,只记录受影响的列
binlog_row_image=minimal
# 指定需要复制的数据库名为testdb
binlog-do-db=testdb
# binlog过期清理时间
expire_logs_days=7
# 每个binlog日志文件大小
max_binlog_size=100M
# binlog缓存大小 
binlog_cache_size=4M
# binlog最大缓存大小
max_binlog_cache_size=100M
# 不生成日志文件的数据库,多个忽略数据库可以用逗号拼接,或者 复制这句话,写多行
binlog-ignore-db=mysql
# 自增值的偏移量
auto-increment-offset=1
# 自增值的自增量
auto-increment-increment=1
# 跳过从库错误,下面的配置是忽略1062的错误
# slave-skip-errors=1062

从库(192.168.128.112)

[client]
port=3306
socket=/approot/data/mysql/mysql.sock
default-character-set=utf8

[mysql]
port=3306
# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id=112
# 只能用IP地址检查客户端的登录,不用主机名
# skip_name_resolve=0
# 设置3306端口
port=3306
# 设置mysql数据库的数据的存放目录
#datadir=/var/lib/mysql
#datadir=/approot/data/mysql/data
datadir=/approot/data/mysql
log-error=/var/log/mysqld.log
#socket=/var/lib/mysql/mysql.sock
socket=/approot/data/mysql/mysql.sock
pid-file=/var/run/mysqld/mysqld.pid

# 支持符号链接
symbolic-links=0
# 允许最大连接数
max_connections=500
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
character-set-server=utf8
collation-server=utf8_general_ci
# SQL模式
sql_mode=STRICT_TRANS_TABLES,ANSI_QUOTES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO
# 设置时间戳的默认属性
explicit_defaults_for_timestamp=true
# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
# 每个innodb表数据单独文件保存
innodb_file_per_table=ON
# 增加每个进程的可打开文件数量
open-files-limit=6000
# 限制从库只读,但是此限制对拥有SUPER权限的用户均无效。
read_only=ON

######################### 从库配置 #############################
# relay_log的位置和名称,如果值为空,则默认位置在数据文件的目录(datadir) 
relay-log=relay-log
# 定义relay_log的位置和名称
relay-log-index=relay-log.index
# 是否自动清空不再需要中继日志时。默认值为1(启用)
relay_log_purge=1
# 当slave从库宕机后,假如relay-log损坏了,则自动放弃所有未执行的relay-log,并且重新从master上获取日志
relay_log_recovery=1
# 当设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay_log中继日志里
sync_relay_log=0
# 与sync_relay_log的配置含义相似 
sync_relay_log_info=0

二、安装前准备工作,两台主机都要做

配置网络、防火墙、内核安全

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
#BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
IPV6INIT=no
IPV4_FaiLURE_FATAL=no
NAME=ens33
UUID=a9ef0538-d1ea-4f84-8ce6-9446304c9ed4
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.128.112
GATEWAY=192.168.128.2
IPV6_PRIVACY=no
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8
DNS3=8.8.4.4
systemctl restart network
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld

vim /etc/selinux/config
设置:SELINUX=disabled
setenforce 0

三、安装并配置mysql,但一定不要启动,两台安装方法相同

准备安装介质:
mkdir -p /approot/software/
scp -r root@192.168.128.111:/approot/software/mysql/ /approot/software/
或者直接下载后解压也可以
tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar  -C /approot/software/mysql

预先检查卸载mariadb
rpm -qa | grep mariadb
rpm -ev --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
预先检查卸载mysql
rpm -qa|grep -i mysql
rpm -ev --nodeps mysql-commUnity-server-5.7.28-1.el7.x86_64
rpm -ev --nodeps mysql-community-client-5.7.28-1.el7.x86_64
rpm -ev --nodeps mysql-community-common-5.7.28-1.el7.x86_64
rpm -ev --nodeps mysql-community-libs-5.7.28-1.el7.x86_64

安装mysql
cd /approot/software/mysql
rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
yum install libaio
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm

四、分别配置并启动两台mysql,因为主从都修改默认的datadir,因此需要在启动前进行配置。

分别将主从的配置复制到各自主机的/etc/my.cnf中。

分别在两台主机上创建文件夹并授权

mkdir -p /approot/data/mysql
chown -R mysql:mysql /approot/data/mysql
ll -d /approot/data/mysql

另开一个监视日志的终端,方便查看动态初始化密码
tail -F /var/log/mysqld.log
如果不开,也可以启动后打开查找,或命令查找
grep "passWord" /var/log/mysqld.log

比如查看到结果为:
[Note] A temporary password is generated for root@localhost: bBq*oaqc0ryE

启动mysql服务

systemctl start mysqld
根据上面方法获取到密码登陆mysql:
[root@hadoop100 etc]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.7.28

修改root密码

set global validate_password_policy=LOW;
set global validate_password_length=5;
set password for root@localhost=password("leizm");
grant all privileges on *.* to "root"@"%" identified by "leizm";
flush privileges;

如果是主库,则在主库上创建个同步数据的账户,用来主从复制,提供给从库访问用。

create user "repl"@"192.168.128.%" identified by "leizm";
grant replication slave on *.* to "repl"@"192.168.128.%";
flush privileges;

两台mysql都启动后就剩下同步了

五、主从同步启动复制,先操作主库、再操作从库

主库上获取同步点

mysql> flush tables with read lock;
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 |      715 | testdb       | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql> unlock tables;

从库根据主库同步点执行同步

stop slave;
change master to
 master_host="192.168.128.111",
 master_port=3306,
 master_user="repl",
 master_password="leizm",
 master_log_file="mysql-bin.000004",
 master_log_pos=715;
start slave;
show slave statusG;


上面命令执行结果:
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> change master to
    ->  master_host="192.168.128.111",
    ->  master_port=3306,
    ->  master_user="repl",
    ->  master_password="leizm",
    ->  master_log_file="mysql-bin.000004",
    ->  master_log_pos=715;
start slave;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave statusG;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.128.111
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 715
               Relay_Log_File: relay-log.000002
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000004
             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: 715
              Relay_Log_Space: 521
              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: 111
                  Master_UUID: af18a083-66c1-11ea-98c7-0050563D66c2
             Master_Info_File: /approot/data/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)

同步成功!

有更多的配置信息和常见问题,可参考:

https://blog.csdn.net/sky__liang/article/details/85684615

Https://blog.csdn.net/daicooper/article/details/79905660

https://www.cnblogs.com/cjsblog/arcHive/2018/09/26/9706370.html

https://blog.csdn.net/qq_36441027/article/details/81139209

https://zixuePHP.net/article-440.html

https://blog.csdn.net/juded/article/details/54600294

您可能感兴趣的文档:

--结束END--

本文标题: CentOS7下RPM模式搭建MySQL5.7.28主从复制

本文链接: https://www.lsjlt.com/news/4966.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • sql中外码怎么设置
    sql 中外码设置步骤:确定父表和子表。在子表中创建外码列,引用父表主键。使用 foreign key 约束将外码列链接到父表主键。指定引用动作,以处理父表数据更改时的子表数据操作。 ...
    99+
    2024-05-15
  • sql中having是什么
    having 子句用于过滤分组结果,应用于分组后的数据集。它与 where 子句类似,但基于分组结果而不是原始数据。用法:1. 过滤分组后的聚合值。2. 根据分组后的...
    99+
    2024-05-15
  • 在sql中空值用什么表示
    在 sql 中,空值表示未知或不存在的值,可使用 null、空字符串或特殊值表示。处理空值的方法包括使用操作符(is null/is not null)、coalesce 函数(返回第一...
    99+
    2024-05-15
    oracle
  • sql中number什么意思
    sql 中的 number 类型用于存储数值数据,包括小数和整数,特别适合货币、度量和科学数据。其精度由 scale(小数点位数)和 precision(整数字段和小数字段总位数)决定。...
    99+
    2024-05-15
  • sql中空值赋值为0怎么写
    可以通过使用 coalesce() 函数将 sql 中的空值替换为指定值(如 0)。coalesce() 的语法为 coalesce(expression, replacement),其...
    99+
    2024-05-15
  • sql中revoke语句的功能
    revoke 语句用于撤销指定用户或角色的权限或角色成员资格。可撤销的权限包括 select、insert、update、delete 等,撤销的对象类型包括表、视图、存储过程...
    99+
    2024-05-15
    敏感数据
  • sql中REVOKE是什么意思
    revoke 是 sql 中用于撤销用户或角色对数据库对象权限的命令。它通过撤销权限类型、对象级别和目标权限来实现:权限类型:撤销 select、insert、update、d...
    99+
    2024-05-15
  • sql中sp是什么意思
    sql中的sp是存储过程的缩写,它是一种预编译的、已命名的sql语句块,存储在数据库中,可以被用户通过简单命令调用。存储过程的特点有:可重用性、模块化、性能优化、安全性、事务支持。存储过...
    99+
    2024-05-15
    敏感数据
  • sql中references是什么意思
    sql 中的 references 关键字用于在外键约束中定义表之间的父-子关系。外键约束确保子表中的行都引用父表中存在的行,从而维护数据完整性。references 语法的格式为:fo...
    99+
    2024-05-15
  • sql中判断字段为空怎么写
    sql 中可通过 4 种方法判断字段是否为空:1)is null 运算符;2)is not null 运算符;3)coalesce() 函数;4)case 语句。例如,查询所有 colu...
    99+
    2024-05-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作