MYSQL服务器复制配置

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:
首先声明:此文是在失去U盘极度郁闷的时候写的,有些零散,估计也有错误.欢迎大家指出
 
MYSQL 服务器复制配置
 
这是根据我之前看的MYSQL复制的文档然后自己亲自实验的过程.配置的功能比较简单.
环境 :
主服务器:
redhat9
mysql 5.0.16
机器名:dbmaster
IP:192.168.0.111
从服务器:
redhat9
mysql5.0.16
机器名:dbslave
IP:192.168.0.100
 
配置过程 :
整个过程与 MYSQL 文档中的复制设置步骤一一对应 , 只是具体化和标明了一些要注意的地方 .. 如果有兴趣的朋友可以对照阅读 , 会更加理解 .
 
1.确认两台服务器的MYSQL版本,mysql –V命令查看
注意:  MySQL 不同版本之间的 ( 二进制日志 )binlog 格式可能会不一样,所以最好采用相同的版本 . 如果达不到要求 , 必须要保证 Master 的版本不能高于 Slave 版本
 
2.在主服务器上为服务器设置一个连接账户。该账户必须授予REPLICATION SLAVE权限。我为了简单没做这一步,直接用root账户.
正常的步骤是:
假定你的域为mydomain.com,想要创建用户名为repl的一个账户,从服务器可以使用该账户从你的域内的任何主机使用密码slavepass来访问主服务器。要创建该 账户,可使用GRANT语句:
mysql> GRANT REPLICATION SLAVE ON *.*   
->TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
如果想要在 Slave 上有权限执行  " LOAD TABLE FROM MASTER"     "LOAD DATA FROM MASTER语句的话,必须授予全局的 FILE  SELECT 权限:
mysql>GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO  'repl'@'%.mydomain.com' IDENTIFIED BY 'rep';
 
3.在主服务器上执行FLUSH TABLES WITH READ LOCK语句来刷新表,同时阻止写操作.
mysql> FLUSH TABLES WITH READ LOCK
然后对主服务器上的数据进行快照。(此时不要退出mysql的提示符,退出的话就解锁了.新开一个ssh窗口进行下面所说的归档打包操作)
创建快照最简单的途径是使用归档程序对主服务器上的数据目录中的数据库进行二进制备份。要使用tar来创建包括所有数据库的归档文件,进入主服务器的数据目录,然后执行命令:(注意下面的目录操作是在bash的提示符下进行,我用shell>来代表,还要注意执行的命令是在哪台服务器上)
shell> tar -cvf /tmp/mysql-snapshot.tar .
然后将归档文件复制到从服务器的/tmp目录。
在从服务器上,进入数据库的数据目录,并使用下述命令解压缩归档文件:
shell> tar -xvf /tmp/mysql-snapshot.tar
 
FLUSH TABLES WITH READ LOCK所置读锁定有效时(这就是刚刚所说不要退出mysql提示符的原因),读取主服务器上当前的二进制日志名和偏移量值,直接输入命令SHOW MASTER STATUS.
mysql > SHOW MASTER STATUS;
+------------------------+------------+-------------------+-----------------------+
| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------------+------------+-------------------+------------------------+
mysql-bin.000045  |     947 |             |                 |
+------------------------+------------+-------------------+-----------------------+
 
File列显示日志名,而Position显示偏移量。在该例子中,二进制日志值为mysql-bin.000045偏移量为947。记录该值。以后设置从服务器时需要使用这些值。它们表示复制坐标,告诉从服务器应从该点开始从主服务器上进行更新。
取得快照并记录日志名和偏移量后,可以在主服务器上重新启用写活动:
mysql> UNLOCK TABLES
 
4. 确保主服务器上my.cnf文件的[mysqld]部分包括一个log-bin选项。该部分还应有一个server-id=Master_id选项,其中master_id必须为12321之间的一个正整数值。例如:
            [mysqld]
            log-bin=mysql-bin
            server-id=1
一般情况你打开my.cnf,已经默认是这样的设置了,里面内容看起来像下面这样:
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id       = 1
如果这些选项不存在,添加它们并且重启服务器.binary logging(二进制日志)没有启用的情况下,服务器是不能称为复制主服务器的
 
5.停止从服务器
shell> mysqladmin -u root shutdown -p
my.cnf文件中添加下面的行:
        [mysqld]
        server-id=slave_id
slave_id值同Master_id值一样,必须为12321之间的一个正整数值。并且,从服务器的ID必须与主服务器的ID不相同。例如:
[mysqld]
server-id=2
如果设置多个从服务器,每个从服务器必须有一个唯一的server-id值,必须与主服务器的以及其它从服务器的不相同。
注意:这里的设置与上面的有很大不同.其实默认的my.cnf中已经有相应的设置,前面已经说过,对于主服务器基本不用修改,对于从服务器,修改也很简单.(其实文件中说的满清楚的,E文好的应该没问题)
必须将主服务器打开的那两个选项注释掉
# Replication Master Server (default)
# binary logging is required for replication
# log-bin=mysql-bin
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
# server-id     = 1
然后把从服务器的对应的选项打开
# Replication Slave (comment out master section to use this)
……(省略)
# required unique id between 2 and 2^32 - 1
# (and different from the master)
# defaults to 2 if master-host is set
# but will not function as a slave if omitted
server-id       = 2 (对于多个从服务器,就依此类推,2,3,4…)
 
6.如果对主服务器的数据进行二进制备份,启动从服务器之前将它复制到从服务器的数据目录中。确保对这些文件和目录的权限正确。你用来运行从服务器的系统帐号必须能够读写这些文件,就如同在主服务器上一样。
 
7.启动从服务器。
mysqld_safe --user=mysql &
不同服务器的配置可能不一样,一般会在/etc/rc.d/rc.local中有写入.
如果前面已经复制了,用--skip-slave-start选项启动从服务器,以便它不立即尝试连接主服务器。你也可能想要用--logs-warnings选项启动从服务器(默认设置启用),以便在错误日志中显示更多的问题相关的信息(例如,网络或连接问题)。放弃的连接将不会记入错误日志,除非这个option的值大于1
 
8.如果使用mysqldump备份主服务器的数据,将转储文件装载到从服务器:
shell> mysql -u root -p < dump_file.sql
我没有采用mysqldump这种方式备份,所以这步跳过.
 
9.在从服务器上执行下面的语句:
mysql> CHANGE MASTER TO                         
    -> MASTER_HOST='192.168.0.111',         
//写主服务器的名称或者IP
    -> MASTER_USER='root',          
 //写用来复制的帐号,前面说明过我直接用的root
    -> MASTER_PASSWORD='xxx',        
 //复制帐号的密码,这里就是指root的密码
    -> MASTER_LOG_FILE='mysql-bin.000045',          
 //之前记录的日志名
    -> MASTER_LOG_POS=947;            
 //之前记录的偏移量
返回:
Query OK, 0 rows affected (0.01 sec)
下面的表显示了字符串选项的最大长度:
Master_Host
60
Master_USER
16
Master_PASSWORD
32
Master_Log_File
255
 
10.启动从服务器线程:
   mysql> START SLAVE
执行这些程序后,从服务器应连接主服务器,并补充自从快照以来发生的任何更新。
 
测试 :
在从服务器上查看
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.111
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000045
Read_Master_Log_Pos: 1064
Relay_Log_File: dbpi-relay-bin.000002
Relay_Log_Pos: 352
Relay_Master_Log_File: mysql-bin.000045
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: 1064
Relay_Log_Space: 352
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
红色标示显示出从服务器的两个线程已经启动.
 
在从服务器上可以查看线程运行状态
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
     Id: 3
   User: root
   Host: localhost
     db: test
Command: Query
   Time: 0
  State: NULL
   Info: SHOW PROCESSLIST
*************************** 2. row ***************************
     Id: 18
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 43
  State: Waiting for master to send event
   Info: NULL
*************************** 3. row ***************************
     Id: 19
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 4294966771
  State: Has read all relay log; waiting for the slave I/O thread to update it
   Info: NULL
3 rows in set (0.00 sec)
 
在主服务器上做一个update的语句,从服务器立刻就会同步更新.配置完成.
 
说明:由于从服务器是通过读主服务器的二进制日志来实现自我更新的,所以对于对数据库进行修改的操作都要放在主服务器上执行,而从服务器只用来进行查询.(也就是只读不写的数据库操作).


本文转自yahoon 51CTO博客,原文链接:http://blog.51cto.com/yahoon/33231,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
seatunnel配置mysql2hive
本文介绍了SeaTunnel的安装与使用教程,涵盖从安装、配置到数据同步的全过程。主要内容包括: 1. **SeaTunnel安装**:详细描述了下载、解压及配置连接器等步骤。 2. **模拟数据到Hive (fake2hive)**:通过编辑测试脚本,将模拟数据写入Hive表。 3. **MySQL到控制台 (mysql2console)**:创建配置文件并执行命令,将MySQL数据输出到控制台。 4. **MySQL到Hive (mysql2hive)**:创建Hive表,配置并启动同步任务,支持单表和多表同步。
92 15
RDS用多了,你还知道MySQL主从复制底层原理和实现方案吗?
随着数据量增长和业务扩展,单个数据库难以满足需求,需调整为集群模式以实现负载均衡和读写分离。MySQL主从复制是常见的高可用架构,通过binlog日志同步数据,确保主从数据一致性。本文详细介绍MySQL主从复制原理及配置步骤,包括一主二从集群的搭建过程,帮助读者实现稳定可靠的数据库高可用架构。
95 9
RDS用多了,你还知道MySQL主从复制底层原理和实现方案吗?
做网站如何选择云服务器?(一)配置篇
选择服务器需考虑网站规模、技术需求和地理位置。个人博客适合基础配置,企业官网需4核CPU、8GB内存,电商平台则需更高配置并配备负载均衡。技术上,展示型网站用PHP+MySQL,互动社区需Node.js/Python环境,视频类网站要大带宽。地理位置影响服务器选择,国内用户选腾讯云/阿里云,海外用户选AWS等。主流服务器类型包括虚拟主机(入门级)、云服务器(推荐)和物理服务器(高端需求)。云服务商普遍提供免费试用,便于评估性能。
32 1
【已解决】Matomo本地SMTP配置可以发邮件,但部署到阿里云ECS就发不了邮件
在阿里云ECS上使用Matomo和PHPMailer发送邮件时遇到问题,邮件无法发出且接口调用Pending。经过排查,发现是ECS安全组未开放25/465端口,导致SMTP请求无法正常通信。解决方法为在安全组中配置并开放25/465端口,从而恢复邮件发送功能。
在阿里云ECS云服务器上安装、配置及高效使用Docker与Docker Compose
本文介绍了在阿里云ECS上使用Ubuntu系统安装和配置Docker及Docker Compose的详细步骤。通过这些工具,可以快速部署、弹性扩展和高效管理容器化应用,满足开发和运维需求。内容涵盖Docker的安装、镜像源配置、创建Web程序镜像以及使用Docker Compose部署WordPress等实际操作,并分享了使用体验,展示了阿里云实例的高性能和稳定性。
196 4
怎么根据自己的业务选择阿里云服务器配置大小?
本文指导如何根据业务需求精准选择阿里云服务器配置,涵盖个人轻量级至企业级、计算密集型等场景,推荐不同实例类型、存储与带宽方案,并提供成本优化策略,如包年包月节省成本、按需升级配置及选用性价比高的自研ARM架构实例。帮助用户在数字化转型中实现性能与成本的平衡。 注:以上配置与价格基于阿里云2025年官方数据,实际信息可能有所调整,请以官网实时页面为准。
2025年阿里云服务器配置选择全攻略:CPU、内存、带宽与系统盘详解
在2025年,阿里云服务器以高性能、灵活扩展和稳定服务助力数字化转型,提供轻量应用服务器、通用型g8i实例等多样化配置,满足个人博客至企业级业务需求。针对不同场景(如计算密集型、内存密集型),推荐相应实例类型与带宽规划,强调成本优化策略,包括包年包月节省成本、ESSD云盘选择及地域部署建议。文中还提及安全设置、监控备份的重要性,并指出未来可关注第九代实例g9i支持的新技术。整体而言,阿里云致力于帮助用户实现性能与成本的最优平衡。 以上简介共计238个字符。
阿里云国际站:阿里云服务器端口配置
悟空云@CloudWuKong阿里云是全球领先的云计算服务提供商,为用户提供弹性计算、数据库、存储、网络安全等一系列云计算服务。在使用阿里云服务器时,合理配置端口非常重要,可以提高服务器安全性和稳定性。
|
9天前
|
Windows系统云服务器配置多用户登录
本教程介绍了在Windows云服务器上配置远程桌面服务的详细步骤,包括安装桌面会话主机和远程桌面授权、允许多用户远程连接以及配置新用户并加入远程桌面用户组。通过添加角色和功能、设置组策略以及管理用户权限,实现多用户同时登录和远程访问。按照指引操作,可顺利完成服务器的远程访问配置,提升管理和使用效率。
26 0
如何解决 MySQL 数据库服务器 CPU 飙升的情况
大家好,我是 V 哥。当 MySQL 数据库服务器 CPU 飙升时,如何快速定位和解决问题至关重要。本文整理了一套实用的排查和优化套路,包括使用系统监控工具、分析慢查询日志、优化 SQL 查询、调整 MySQL 配置参数、优化数据库架构及检查硬件资源等步骤。通过一个电商业务系统的案例,详细展示了从问题发现到解决的全过程,帮助你有效降低 CPU 使用率,提升系统性能。关注 V 哥,掌握更多技术干货。
119 0