MYSQL  Replication  主从配置

2023-11-16

MYSQL  Replication  主从配置

        MySQL Replication 又叫做AB复制或者主从复制。它主要用于MySQL的实时备份或者读写分离。在配置之前先做一下准备工作,配置两台mysql服务器,或者在一台服务器上配置两个端口也可以。本文创建了两个虚拟机各安装了一个mysql用于主从配置,文章结尾处也有同一台服务器配置两个不同端口mysql方法,可供参考。

 

一、主服务称master,从服务器称slave

[root@localhost 主服务器]# hostname  master

[root@localhost 从服务器]# hostname  slave

二、配置master

1. 配置文件

[root@localhost mysql]# vi  /etc/my.cnf

#主数据库端ID号

server_id = 1

#开启二进制日志

log-bin = mysql-bin

#需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可

binlog-do-db = db

2. 重启服务,如果启动失败,杀死进程试试

[root@localhost ~]# killall mysqld

[root@localhost ~]# /etc/init.d/mysqld restart

Starting MySQL.. SUCCESS!

3.配置slave访问master的用户的ip权限

[root@localhost ~]# mysql -uroot -p

Enter password:

mysql> grant replication slave on *.* to 'slave'@'192.168.159.131' identified by '123456';

//ip填写从服务器ip,slave是创建的mysql用户名

Query OK, 0 rows affected (0.00 sec)

//现在slave可以连接master数据库了

mysql> flush tables with read lock; 

//锁定数据库,此时不允许更改任何数据

mysql> show master status; 

//查看状态,这些数据是要记录的,一会要在slave端用到

      

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000030 |      730 |              |                  |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

三、配置slave

1.配置文件

[root@localhost mysql]# vi /etc/my.cnf

server-id       = 2

#log-bin=mysql-bin

找到 “server-id = 1” 这一行,删除掉或者改为 “server-id = 2” 总之不能让这个id和master一样,否则会报错。另外在             从上,你也可以选择性的增加如下两行,对应于主上增加的两行:

replicate-do-db=databasename1,databasename2

replicate-ignore-db=databasename1,databasename2

2.重启服务,如果启动失败,杀死进程试试

[root@localhost ~]# killall mysqld

[root@localhost ~]# /etc/init.d/mysqld restart

Starting MySQL.. SUCCESS!

3. slave连接master数据库测试

[root@localhost mysql]# mysql -uslave -p123456 -h192.168.159.132

Welcome to the MySQL monitor.  Commands end with ; or \g.

mysql>

 

四、主从关联配置

1.master配置关联

[root@localhost ~]# mysqldump -uroot -p123456 java_test > 1.sql

//将master数据库拷贝到1.sql

[root@localhost ~]# scp 1.sql root@192.168.159.131:/root/

//将1.sql拷贝到slave上

2. slave配置关联

[root@localhost ~]# mysql -uroot -p123456

mysql> slave stop;

//先把从的服务停掉

mysql>change master to master_host='192.168.159.132', ->master_port=3306,

    -> master_user='slave', master_password='123456',

-> master_log_file='mysql-bin.000030',master_log_pos=730;

//配置关联master,3306可以默认不写,master_log_file参考之前记录的信息

 mysql> slave start;

Query OK, 0 rows affected (0.00 sec)

 

4.master解锁数据库以便从库查询

[root@localhost /]# mysql -uroot -p123456

mysql> unlock tables;

 

5.然后查看slave的状态

mysql> show slave status\G;

确认以下两项参数都为yes:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

6.如果报错参考 

发生错误:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version

解决方案有两个:

一、mysql> grant replication slave on *.* to 'slave'@'192。168.159.131' identified by '123456';时候语句有误导致权限不够,重新创建重复之后操作 

二、删除mysql数据存放目录的多余*bin*文件

[root@localhost data]#rm -rf  /var/mysql/data/*bin*

123.sql                    mysql-bin.000001           mysql-bin.000012           mysql-bin.000023

haha/                      mysql-bin.000002           mysql-bin.000013           mysql-bin.000024

ibdata1                    mysql-bin.000004           mysql-bin.000015           mysql-bin.000026

五、测试主从效果

master端创建haha数据库

slave端查询可显示则说明数据同步

 

附加:一台服务器配置两个mysql方法

1.配lnmp环境时已经装好一个mysql,直接复制

[root@localhost ~]# cd /usr/local/

[root@localhost local]# cp -r mysql mysql_2

[root@localhost local]# cd mysql_2

[root@localhost mysql_2]# ./scripts/mysql_install_db --user=mysql --datadir=/var/mysql2/data

2.初始化mysql

[mysql@localhost ~]$ cd /usr/local/mysql

[mysql@localhost mysql]$ scripts/mysql_install_db

3.复制配置文件

[root@localhost mysql_2]# cp /etc/my.cnf  ./my.cnf

[root@localhost mysql_2]# vim my.cnf

修改

port            = 3307

datadir = /var/mysql2/data

socket          = /usr/local/mysql_2/mysql.sock

4.复制启动脚本

[root@localhost mysql_2]# cp support-files/mysql.server /etc/init.d/mysqld2

修改

basedir=/usr/local/mysql_2

datadir=/var/mysql2/data

$bindir/mysqld_safe --defaults-file=$basedir/my.cnf  --datadir="$datadir" --pid-file="$mysqld_pid_file_path"                       $other_args >/dev/null 2>&1 &

 

5.启动两个mysql并检测

[root@localhost mysql]# /etc/init.d/mysqld restart

Shutting down MySQL. SUCCESS!

Starting MySQL.. SUCCESS!

[root@localhost mysql]# /etc/init.d/mysqld2 restart

Shutting down MySQL. SUCCESS!

Starting MySQL.. SUCCESS!

[root@localhost mysql]# netstat -lnp | grep mysql

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      4038/mysqld        

tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      4392/mysqld        

unix  2      [ ACC ]     STREAM     LISTENING     12888  4392/mysqld         /usr/local/mysql_2/mysql.sock

unix  2      [ ACC ]     STREAM     LISTENING     12645  4038/mysqld         /usr/local/mysql/mysql.sock 

如果报错Starting MySQL.. ERROR! The server quit without updating PID file                     (/var/mysql/data/localhost.localdomain.pid).请尝试初始化./scripts/mysql_install_db --user=mysql --datadir=/var/mysql2/data

 

 

      

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MYSQL  Replication  主从配置 的相关文章

  • 使用 PHP 安全连接 MySQL 的最佳方法[重复]

    这个问题在这里已经有答案了 我想了解一下你们认为使用 PHP 连接到 MySQL 数据库的最安全方法 目前我正在做的方式是一个实用程序 PHP 文件 我将其包含在所有其他 PHP 文件的顶部 实用程序 PHP 文件是这样的 有什么建议么 建
  • 重命名锁定的表

    将表迁移到新模式时 我想确保使用复制和重命名过程原子切换到新表 因此 我尝试重命名锁定的表 如下所示 CREATE TABLE foo new copy data to new table might take very long INSE
  • 为什么这个 Hibernate MySQL 连接是只读的?

    我有一个在 MySQL 数据库上使用 Spring 和 Hibernate 的应用程序 由于某种原因 截至过去几天 每当我尝试将任何对象保留到数据库中时 都会收到以下错误 java sql SQLException 连接是只读的 导致数据修
  • Flutter mysql1 数据包乱序

    我在建立 VPS 与图书馆的连接时遇到一些问题mysql1上颤动 我收到这个错误Unhandled Exception Error 1156 08S01 Got packets out of order当我执行查询时 MySQL服务器版本
  • 您可以使用 PDO 将占位符放入查询的选择部分吗?

    我打算使用 PDOprepare and execute 防止SQL注入攻击的机制 通常 SQL 中的占位符位于条件部分 例如select name age from members where age gt and gender f 但是
  • 将多个文件上传到服务器并

    我的第一篇文章所以要温柔 我尝试过搜索此内容 并且有很多类似的帖子 但我似乎找不到任何与我的问题完全相似的内容 而且我已经在这个问题上花了几个小时了 我正在用 PHP 5 3 和 MySQL 构建一个系统 部分功能是要求用户根据之前的一些选
  • 如果第一个 SELECT 返回 0 行,则执行第二个 SELECT 查询

    我正在尝试加快 PHP 脚本的速度 并且目前正在该事物的 Mysql 域中推送一些 PHP 逻辑 如果第一个 Select 没有返回行或计数为零 是否有办法进行不同的选择查询 请记住 第一个查询需要首先运行 第二个查询应该only如果第一个
  • Java长到MySQL

    Java相当于什么long在 MySQL 的上下文中数据类型 SIGNED BIGINT http dev mysql com doc refman 5 0 en numeric types html是一个 8 字节长的整数 就像 Java
  • System TZ 和 DB TZ 之间的时区感知差异?

    我目前正在将数据库从本地 MySQL 主机迁移到 RDS 中的 Aurora 使用以下命令检查两个系统上的时区设置 SELECT system time zone global time zone session time zone NOW
  • 如何让 YEARWEEK() 将星期日视为一周的开始?

    我试图让 YEARWEEK 函数将星期日视为一周的第一天 日期示例为 2009 年 3 月 1 日星期日 这是我的sql SELECT YEARWEEK 2009 03 01 结果是 gt 200909 这是第 9 周 我相信它告诉我这是第
  • Sequelize 中的 FOR SHARE 和 FOR UPDATE 语句

    当我们使用事务时 常规 SQL 查询可以包含 SELECT FOR SHARE 和 SELECT FOR UPDATE 语句 有没有办法用 Sequelize 设置相同的语句 我还没有找到这些选项 也许有一些技巧 需要什么 您可以在这里阅读
  • 在 Laravel 上将百万行数据从一个数据库复制到另一个数据库

    使用 Laravel Eloquent 我从旧 Mysql 数据库的一张表中复制 700 万行数据 并将这些行放在新 Mysql 数据库的不同表中 问题是 执行此操作花费了几乎一天的时间 并且我需要对近 80M 行重新执行此操作 我一次使用
  • MYSQL计算计数平均值

    我有一个简单的查询 我想要一个平均值 这就是现在的样子 我想知道每个 Opname OpnameID 的平均计数 SELECT Opname OpnameID count as behandelingen per opname FROM b
  • docker-compose 无法等待 mysql 数据库

    我在尝试获取 docker compose 脚本来启动 mysql 数据库和 Django 项目时遇到了真正的问题 但让 Django 项目等待 mysql 数据库准备就绪 我有两个文件 一个 Dockerfile 和一个 docker c
  • 我如何从mysql获取上周、本周和上个月的记录

    我在 Codeigniter 中以 strtotime 格式存储日期 一周从周日开始 this gt db gt where this gt weight create date lt curdate INTERVAL DAYOFWEEK
  • Laravel 4 中如何知道查询是否失败?

    我将 Laravel 4 与 MySQL 结合使用 我想知道如何控制在数据库中插入 更新或删除记录时可能出现的错误 例如 如果我进行如下更新 DB table user gt where id id gt update userdata 我
  • 添加 2 个不同表的总和

    我有这样的东西 2张桌子 视频 会员 在成员表中 我有每个成员的姓名 1 Tom 2 Bob 3 Zack 4 Dan 5 Casey 在视频表中 我有一列名为 成员 的列 其中的名称用逗号分隔 1 Tom Dan 2 Casey Zack
  • 使用git在测试和生产环境之间同步数据库

    我正在尝试在 php mysql 应用程序的开发过程中实现 git 到目前为止 我已经设置了 git repos 并且我们正在使用本地计算机进行测试 并且我们成功地将其用于文件 但我真的不知道如何处理数据库 服务器上有一个 cron 脚本
  • Laravel 模型访问器从缓存中获取 - 性能增强

    我在数据库中有一个项目列表 每个项目都可以选择被否决或赞成 这些投票与其他项目字段一起存储在 MySql 中 例如这样的事情 Schema create items function table table gt increments id
  • MySQL JOIN 的评估顺序是什么?

    我有以下查询 SELECT c FROM companies AS c JOIN users AS u USING companyid JOIN jobs AS j USING userid JOIN useraccounts AS us

随机推荐

  • 卷积神经网络之-Lenet

    更多内容请关注 机器视觉CV 公众号 原文地址 前言 Lenet 是一系列网络的合称 包括 Lenet1 Lenet5 由 Yann LeCun 等人在1990 年 Handwritten Digit Recognition with a
  • 一个将XM音频导入小宇宙的工具

    这个喜马拉雅语音导出工具 能够帮助你导出喜马拉雅中的音频节目 下载后的音频文件 可以复制到小宇宙设备文件夹里面 这样我们就可以用小宇宙播放我们导入的音频文件啦 windows电脑版 https jscs lanzouw com imVZ40
  • 负载均衡原理分析与源码解读

    上一篇文章一起学习了Resolver的原理和源码分析 本篇继续和大家一起学习下和Resolver关系密切的Balancer的相关内容 这里说的负载均衡主要指数据中心内的负载均衡 即RPC间的负载均衡 传送门 服务发现原理分析与源码解读 基于
  • 强化学习之Grid World的时序差分算法解析【MiniWorld】SYSU_2023SpringRL

    强化学习之Grid World的Monte Carlo算法解析 MiniWorld SYSU 2023SpringRL 题目以及思路 代码 运行结果 算法解析 代码算法流程 题目以及思路 环境在这篇博客强化学习原理及应用作业之动态规划算法
  • c语言输出斐波那契数列前40项

    分析 对于斐波那契数列数列来说 就是前一项和前前一项的和 就是当前项 就比如 1 1 2 3 5 其中2就是1 1 3就是1 2 5就是2 3 所以 在c语言中就可以定义数组的方式 去实现 当然 如果一行输出 不美观 于是利用if语句 将i
  • Streamlit项目: 轻松搭建部署个人博客网站

    文章目录 1 前言 1 1 探索 Streamlit 轻松创建交互式应用 1 2 最全 Streamlit 教程专栏 2 我的个人博客网站已上线 2 1 一个集成了智能中医舌诊 中e诊专栏的博客网站 2 2 前期准备 2 3 使用 Stre
  • MS-RTOS 内核模块动态装载

    1 MS RTOS 内核模块动态装载简介 MS RTOS 支持内核模块动态装载功能 用户可以根据需要 在不需要对内核重新编译的情况下 使用 insmod rmmod 等命令动态地将模块加入或移出内核 这样可以提高 MS RTOS 的灵活性
  • 使用clion链接liunx同步项目并编译

    一 clion的下载和安装 下载官网CLion A Cross Platform IDE for C and C by JetBrains 安装后有30天使用日期 学生可以获得免费教育许可证JetBrains 学习产品 二 clion项目的
  • 注解方式、ServletContext 与 ServletConfig和请求

    回顾 http 协议的定义和组成 请求行 请求头 请求体 响应行 响应头 响应体 常见响应状态码的含义 200 成功 404 未找到 405 方法不支持 500 服务器出现异常 常见请求头 Host 主机 User Agent 客户端类型
  • HarmonyOS云开发基础认证练习题

    系列文章目录 HarmonyOS应用开发者基础认证练习题 HarmonyOS应用开发者高级认证练习题 HarmonyOS云开发基础认证练习题 文章目录 系列文章目录 前言 一 判断 二 单选 三 多选 前言 本文所有内容来源于个人进行Har
  • kali 上下载GitHub文件失败

    出现 Failed to connect to github com port 443 Connection refused 把命令 git clone https github com git 换成 git clone git githu
  • 用Excel做简单的数据分析

    一 使用的数据 1 做月销量的柱状图 按住Ctrl可跨区选中 1 选中数据 2 选择柱状图 一般柱状图都使用2D 3 为图加上数据标签 更加直观 2 以同样的方式做饼图 1 如图 一般饼图都是做3D的 3 求月销售额 单价 X 月销量 1
  • 使用VS Code进行Qt开发

    使用VS Code进行Qt开发 文章目录 使用VS Code进行Qt开发 测试环境 步骤 1 将Qt的bin目录添加到环境变量 2 安装VS Code扩展 3 使用Qt Creator创建CMake项目 4 在VS Code中打开项目 5
  • C#学习笔记--关于银行存取款的小实验

    C 面向对象程序设计 编程模拟实现个人银行的存款业务 要求 1 提供两种账户 活期存款账户CheckingCustom和定期存款账户FixedCustom 2 创建活期账户时 必须提供账户名和开户金额 而账号则根据存款分类自动生成 3 不论
  • LeetCode 刷题 454

    看完的想法就是暴力解 不过 不用想都知道超时了 想了一会还是没有思路 就去学习一下别人怎么做的 感觉就是二数相加 再灵活一点 这没想到 还是练得少了 四个数组 两两分组 第一组 遍历 相加 将各个和的个数存入map中 第二组 查找 0于各个
  • Unfortunately you can‘t have non-Gradle Java modules and Android-Gradle modules in one project

    解决步骤 Close Project Close Android Studio IDE 删除 idea 目录和 iml 文件 Open Android Studio IDE And Project 步骤转自 https blog csdn
  • 高并发下接口幂等性的解决方案

    欢迎关注方志朋的博客 回复 666 获面试宝典 一 背景 我们实际系统中有很多操作 是不管做多少次 都应该产生一样的效果或返回一样的结果 例如 前端重复提交选中的数据 应该后台只产生对应这个数据的一个反应结果 我们发起一笔付款请求 应该只扣
  • js连接web3,连接小狐狸metamask钱包,实现链不对后切换网络和创建网络

    直接上代码 我这里吧所有配置都改成正式的链56 一旦用户的小狐狸钱包现在的链不一致 就询问切换网络 没有就创建网络 网络切换成功后 收到监听 重新连接一下web3 就是重新调用一些connectWeb3这个方法 再连接合约 connectW
  • 20230918使用ffmpeg将mka的音频转为AAC编码以便PR2023来识别

    20230918使用ffmpeg将mka的音频转为AAC编码以便PR2023来识别 2023 9 18 20 58 ffmpeg i 1 mka acodec aac 1 mp4 ffmpeg i 1 mka vn c a aac 2 aa
  • MYSQL  Replication  主从配置

    MYSQL Replication 主从配置 MySQL Replication 又叫做AB复制或者主从复制 它主要用于MySQL的实时备份或者读写分离 在配置之前先做一下准备工作 配置两台mysql服务器 或者在一台服务器上配置两个端口也