MySQL主从复制,一主一从5.7

2023-12-17

演示版本5.7,一主一从

1. 安装MySQL:

wget  https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
yum -y install  mysql80-community-release-el7-7.noarch.rpm
yum clean all && yum makecache
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
yum repolist enabled | grep mysql
yum -y  install mysql-community-server
systemctl enable mysqld --now

2. 查看版本和密码:

[root@master ~]# mysql --version

[root@master ~]# grep 'password' /var/log/mysqld.log

3. 修改主库配置文件:

vim /etc/my.cnf
# master增加如下配置
server_id=131  # 需要保证唯一性 不可与其他从服务器相同 如果为0会拒绝所有从服务器连接
log-bin=mysql-bin # 设置同步的binary log二进制日志文件名前缀,默认是binlog
# 可选配置
binlog-format=row  # 主从复制的格式(mixed,statement,row,默认格式是statement。建议是设置为row,主从复制时数据更加能够统一)

expire_logs_days = 10 # 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
max_binlog_size = 100M # 日志最大大小  
binlog_do_db = test   # 需要同步的数据库
binlog_ignore_db = mysql  # 不需要同步的数据库

# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
# 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

4. 修改从库配置文件:

# slave增加如下配置
server_id=96  # 需要保证唯一性 不可与其他从服务器相同 如果为0会拒绝所有从服务器连接
log-bin=mysql-bin # 设置同步的binary log二进制日志文件名前缀,默认是binlog
# 可选配置
binlog-format=row  # 主从复制的格式(mixed,statement,row,默认格式是statement。建议是设置为row,主从复制时数据更加能够统一)

expire_logs_days = 10 # 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
max_binlog_size = 100M # 日志最大大小  
binlog_do_db = test   # 需要同步的数据库
binlog_ignore_db = mysql  # 不需要同步的数据库

# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
# 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

5. 重启主库开始配置:

[root@master ~]# systemctl restart mysqld

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'QAZqaz1234@';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.33.96'  IDENTIFIED BY 'Slave@123';
mysql> FLUSH PRIVILEGES;
mysql> SHOW MASTER STATUS;

6. 创建测试数据:

mysql> create database test;
mysql> use test
mysql> create table mytest(id int(10),name varchar(20),age int(10));
mysql> insert into mytest(id,name,age) values (1,'tom',23);
mysql> select * from mytest;

7. 重启从库开始配置:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'QAZqaz1234@';
mysql> CHANGE MASTER TO MASTER_HOST = '192.168.33.131',
MASTER_PORT = 3306,
MASTER_USER = 'slave',
MASTER_PASSWORD = 'Slave@123',
MASTER_LOG_FILE = 'mysql-bin.000001',   
MASTER_LOG_POS = 846;
# MASTER_LOG_FILE = 'mysql-bin.000001'为File
# MASTER_LOG_POS = 846  为Position

8. 开始同步:

mysql> START SLAVE;
mysql> FLUSH PRIVILEGES;

9. 查看状态:

mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.33.131
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 1473
               Relay_Log_File: node-relay-bin.000002
                Relay_Log_Pos: 947
        Relay_Master_Log_File: mysql-bin.000001
             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: 1473
              Relay_Log_Space: 1153
              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: 146
                  Master_UUID: 0df2fba7-9bdc-11ee-8241-000c294ec152
             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表示成功

10. 验证数据:

在从库查询能查询到主库刚刚创建的数据即成功

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)

mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| mytest         |
+----------------+
1 row in set (0.00 sec)

mysql> select * from mytest;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | tom  |   23 |
+------+------+------+
1 row in set (0.00 sec)

主库增加一条数据:

从库查询:

11. 命令扩展:

mysql> STOP SLAVE;  # 停止主从复制
mysql> RESTART SLAVE;  # 重启主从复制
mysql> RESET  SLAVE;  # 重置主从复制状态
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL主从复制,一主一从5.7 的相关文章

  • Mysql:计算访问频率

    我有这张桌子 CREATE OR REPLACE TABLE hits ip bigint page VARCHAR 256 agent VARCHAR 1000 date datetime 我想计算每个页面的 googlebot 访问频率
  • 当我耗尽 bigint 生成的密钥时会发生什么?怎么处理呢?

    我自己无法想象一个好的答案 所以我想在这里问 在我心里 我总是想知道 如果AUTO INCREMENT PRIMARY ID我的专栏MySQL表用完了吗 举例来说 我有一个有两列的表 一个ID auto increment primary
  • 未找到教义列:1054“字段列表”中未知列“s.features”

    我在站点表中添加了一个新列 features 并使用 Doctrine 重新生成了模型 此代码导致错误 siteTable Doctrine Core getTable Site site siteTable gt findOneByNam
  • 如何备份整个MySQL数据库的所有用户、权限和密码?

    我需要备份整个 MySQL 数据库 其中包含所有用户及其权限和密码的信息 我看到选项http www igvita com 2007 10 10 hands on mysql backup migration http www igvita
  • MySQL - 替换列中的字符

    作为一个自学成才的新手 我给自己制造了一个大问题 在将数据插入数据库之前 我将字符串中的撇号 转换为双引号 而不是 MySQL 实际需要的反斜杠和撇号 在我的表增长到超过 200 000 行之前 我认为最好立即纠正此问题 所以我做了一些研究
  • 如何将值从 android 传递到 php Web 服务并检索它?

    我正在尝试将一个值传递给我的 php web 服务 我已经使用此代码来传递 名称 值 private class MyAsyncTask extends AsyncTask
  • 如何删除非空约束?

    假设创建了一个表 如下所示 create table testTable colA int not null 您将如何删除非空约束 我正在寻找类似的东西 ALTER TABLE testTable ALTER COLUMN colA DRO
  • 展平具有未知列数的子/父数据

    我正在努力寻找存储和表示 SQL MySQL DB 和 C Windows 表单中的数据的最佳方法 我的数据映射到如下所示的类时 public class Parent public string UniqueID get set Key
  • 在关系数据库中存储树结构的已知方法有哪些? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • SQLAlchemy+pymysql 错误:sqlalchemy.util.queue.Empty

    尝试使用 Eclispse 在 Ubuntu 上运行 Python 2 SQLAlchemy 0 8 和 MySQL5 2 但我不断收到以下错误 我使用 pymysql 实际上是 pymysql3 引擎 模块监视器 from sqlalch
  • 子查询与连接

    我重构了从另一家公司继承的应用程序的一个缓慢部分 以使用内部联接而不是子查询 例如 WHERE id IN SELECT id FROM 重构后的查询运行速度提高了约 100 倍 50 秒到 0 3 我预计会有改进 但谁能解释为什么它如此剧
  • MySql JOINS 的优点/缺点

    当我从多个表中选择数据时 我经常使用 JOINS 最近我开始使用另一种方式 但我不确定从长远来看会产生什么影响 例子 SELECT FROM table 1 LEFT JOIN table 2 ON table 1 column table
  • 是否可以在MYSQL中动态选择列名,其中列名是N个已知值中的1?

    我担心答案会是直接的 不 但我想知道是否可以在 MySQL 中执行如下操作 SELECT title label name FROM table 即选择单个列 可以称为title label or name from table 原因是 查
  • 有关 payment_status 的帮助 PayPal 已退款 已撤销 部分退款 ION

    如果会员订阅和 或支付一次付款并且他们请求退款 撤销或部分退款 下面的脚本是否可以与通过 IPN 发送的 IPN 消息一起使用 if payment status Refunded payment status Reversed payme
  • PHP实现的机票预订系统

    如何防止预订系统中的座位被重复预订 我正在用 PHP 和 MYSQL 制作一个航空旅行预订系统模型作为一个项目 我有一个小问题 仅在付款后 门票和座位详细信息才会永久存储在此处 座位号在付款前分配 假设人 1 预订了飞机上的座位 x 并支付
  • 使用 Hibernate 和 MySQL、全局和本地进行 Spring 事务管理

    我正在使用 MySQL Server 5 1 Spring 3 0 5 和 Hibernate 3 6 开发 Web 应用程序 我使用 Springs 事务管理 我是新手 所以如果我问一个容易回答的问题 请耐心等待 1 我读到了有关全局 x
  • java中如何知道一条sql语句是否执行了?

    我想知道这个删除语句是否真的删除了一些东西 下面的代码总是执行 else 是否删除了某些内容 执行此操作的正确方法是什么 public Deleter String pname String pword try PreparedStatem
  • MYSQL:SQL查询获取自增字段的值

    我有一张桌子 主键是id及其自动递增 现在 当我插入新记录时 我需要获取更新记录的 id 我怎样才能做到这一点 如果我使用查询 select max id from table name 执行后我可以获得id 但我能确定它是刚刚插入的记录的
  • Mysql获取特定表的最后一个id

    我必须从特定的插入表中获取最后的插入 ID 可以说我有这个代码 INSERT INTO blahblah test1 test 2 VALUES test1 test2 INSERT INTO blahblah2 test1 test 2
  • #1115 - 未知字符集:'utf8mb4'

    我的电脑上运行着一个本地网络服务器 用于本地开发 我现在正处于导出数据库并导入到我的托管 VPS 的阶段 导出然后导入时出现以下错误 1115 未知字符集 utf8mb4 有人能指出我正确的方向吗 该错误明确表明您没有utf8mb4您的阶段

随机推荐