MySQL内部复制功能是建立在两个或两个以上服务器之间,通过设定它们之间的
主-从关系来实现的。其中一个作为主服务器,其它的作为副服务器。以下将
详细讨论如何配置两台服务器,将一个设为主服务器,另一个设为副服务器。
并且描述一下在它们之间进行切换的处理过程。
1.1 主服务器授权
授权副服务器可以连接主服务器并可以进行更新。这是在主服务器上进行的,创建一个
username和password供副服务器访问时使用。在MySQL命令行下输入
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘username’@’slave-server-hostname’ IDENTIFIED BY ‘password’;
|
根据实际情况替换username,slave-server-hostname,password。
1.2 数据复制
一旦建立好访问许可后,接下来就是从主服务器向副服务器复制数据。可以从mysqldump
工具。
#锁住表,禁止update。
mysql> FLUSH TABLES WITH READ LOCK;
#导出数据 Windows中为命令提示符。
shell> mysqldump –opt databasename > backup.sql
#解除锁定
mysql> UNLOCK TABLES
|
将备份好的数据库脚本backup.sql拷贝到副服务器。
另外也可以使用LOAD DATA FROM MASTER语句将主服务器的数据传输到副服务器,但
使用上有些限制。
注意:在执行数据复制的过程中,要确保不能对主服务器执行更新操作。
1.3 配置主服务器
在选项配置文件中赋予主服务器一个server-id,该id必须是1到2^23-1范围
内的唯一值。主服务器和副服务器的server-id不能相同。
另外,还需要配置主服务器,使之启用二进制日志,即在选项配置文件中添加log-bin
启动选项。
选项文件示例(其中#开头的为注释):
[mysqld]
#唯一值,并不能与副服务器相同
server-id=3
#日志文件以binary_log为前缀,如果不给log-bin赋值,日志文件将以#master-server-hostname为前缀
log-bin = binary_log
#日志文件跳过的数据库(可选属性)
binlog-ignore-db=mysql
#日志文件操作的数据库(可选属性)
binlog-do-db=netbar
|
1.4 重启主服务器
配置好以上选项后,重启MySQL服务,新选项将生效。现在,所有对数据库中信息的
更新操作将被写进日志中。
注意:如果主服务器的二进制日志已经启用,关闭并重新启动之前应该对以前的二
进制日志进行备份。重新启动后,应使用RESET MASTER语句清空以前的日志。
1.5 配置副服务器
在副服务器上的MySQL选项配置文件中添加以下参数。
[mysqld]
#唯一,并与主服务器上的server-id不同。
server-id=7
#主服务器的主机名或者ip地址
master-host=master-server-hostname
#如果主服务器没有在默认的端口上监听,则需确定master-port选项
master-port=3306
#步骤2.1中创建的用户名和密码
master-user=username
master-password=password
#复制操作要针对的数据库(可选,默认为全部)
replicate-do-db=netbar
#如果主副服务器间连接经常失败,需增加master-retry-count和master-connect-retry
#master-retry-count连接重试的次数
#master-connect-retry 连接失败后等待的秒数
master-retry-count = 999
master-connect-retry = 60
|
1.6 重启副服务器
副服务器上MySQL服务重启后,还在数据目录中创建一个master.info文件,其中包含
所有有关复制过程的信息(连接主服务器的相关信息及与主服务器交换数据的相关信息)。
在初次启动以后,副服务器将检查这个master.info文件,以得到相关信息。如果想修
改复制选项,删除master.info并重启MySQL服务,在启动过程中使用选项配置文件中的
新选项进行重新创建了master.info文件。
将主服务器上备份好的数据库脚本文件(backup.sql)导入到副服务器数据库中,以便保
证主-副服务器上进行复制操作的起点一样。
2 管理复制过程
2.1 管理主服务器
显示数据库服务器上有关线程的信息
mysql> SHOW BINLOG EVENTS
|
显示二进制日志中的信息(MySQL 4.0以后的版本中)
mysql> SHOW MASTER STATUS
|
显示主服务器中有关二进制日志的其他信息。
2.2 管理副服务器
用于开始或恢复复制,START SLAVE命令执行后,并不意味着一切都OK,需要用
SHOW SLAVE STATUS来监督副服务器的活动
在SHOW SLAVE STATUS的命令输出后,应该包含Slave_IO_Running对应的值为YES,
Slave_SQL_Running对应的值为YES
停止或结束复制
查看服务器的状态信息
mysql> CHANGE MASTER TO master_def [, master_def] ...
master_def:
MASTER_HOST = 'host_name'
| MASTER_USER = 'user_name'
| MASTER_PASSWORD = 'password'
| MASTER_PORT = port_num
| MASTER_CONNECT_RETRY = count
| MASTER_LOG_FILE = 'master_log_name'
| MASTER_LOG_POS = master_log_pos
| RELAY_LOG_FILE = 'relay_log_name'
| RELAY_LOG_POS = relay_log_pos
| MASTER_SSL = {0|1}
| MASTER_SSL_CA = 'ca_file_name'
| MASTER_SSL_CAPATH = 'ca_directory_name'
| MASTER_SSL_CERT = 'cert_file_name'
| MASTER_SSL_KEY = 'key_file_name'
| MASTER_SSL_CIPHER = 'cipher_list'
|
CHANGE MASTER TO更新了副服务器与主服务器连接和通讯的参数,即更新了master.info
和relay-log.info两个文件中的内容。如果不需要改变已有参数则不需要指定相对于的
参数名。在更改参数值之前需调用STOP SLAVE停止副服务器上的IO_THREAD和SQL_THREAD进程。
2.3 数据恢复
mysql> LOAD DATA FROM MASTER
|
该语句在MySQL4.0以上版本使用,这是一种副服务器从主服务器获得数据的方法。但
使用这个命令有些限制,目前MySQL建议只能在主服务器数据库很小以及主服务器对长
时间不存在问题的情况设置了读锁的的情况下使用。此外只有MyISAM类型的表可以使
用这个命令复制数据。
4 附录
5.1 选项配置文件
Windows MySQL将在Windows安装目录(比如C:\WINNT或C:\WINDOWS)中的名为my.cnf的选项文件和
C:\my.cnf中查找启动选项。作为代替,my.cnf可以采用文件名为my.ini,位于Windows安装目录中。
Unix/Linux MySQL将检查/etc/my.cnf文件,如果没有MySQL使用默认启动选项。也可以手工创建该文件。
5.2 数据目录
Windows MySQL的安装目录下的data目录,比如C:\mysql\data目录
Unix/Linux 如果是源码方式安装(tar.gz)MySQL,数据目录在/usr/loca/mysql/data目录;
如果是用RPM包安装的,数据目录在/var/lib/mysql目录
5.3 从MySQL数据库和表中倒出结构和数据
shell> mysqldump [OPTIONS] database [tables]
|
如果你不给定任何表,整个数据库将被倾倒。 通过执行mysqldump --help,你能得到你mysqldump的
版本支持的选项表。
注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在倾倒结果前装载整个结果集到
内存中,如果你正在倾倒一个大的数据库,这将可能是一个问题。
mysqldump支持下列选项(常用的):
--add-locks
在每个表倾倒之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。
-F, --flush-logs
在开始倾倒前,洗掉在MySQL服务器中的日志文件。
-f, --force,
即使我们在一个表倾倒期间得到一个SQL错误,继续。
-h, --host=..
从命名的主机上的MySQL服务器倾倒数据。缺省主机是localhost。
-l, --lock-tables.
为开始倾倒锁定所有表。
-t, --no-create-info
不写入表创建信息(CREATE TABLE语句)
-d, --no-data
不写入表的任何行信息。如果你只想得到一个表的结构的倾倒,这是很有用的!
--opt
同--quick --add-drop-table --add-locks --extended-insert --lock-tables。应该给你为
读入一个MySQL服务器的尽可能最快的倾倒。
-pyour_pass, --password[=your_pass]
与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。
-P port_num, --port=port_num
与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)
-u user_name, --user=user_name
与服务器连接时,MySQL使用的用户名。缺省值是root。
最常见的mysqldump使用可能制作整个数据库的一个备份:
mysqldump --opt database > backup-file.sql
分享到:
相关推荐
### MySQL热备份详解 在IT领域,数据的安全与完整性至...通过以上步骤,即可完成MySQL热备份的配置与实施,确保了在不影响业务运行的前提下,实现了数据的实时、安全备份,大大提升了数据库系统的稳定性和数据安全性。
MySQL双机热备份是一种高可用性和灾难恢复策略,它通过实时同步主数据库的数据到备用数据库来确保业务连续性。在MySQL中,这种热备份通常基于内部的复制功能,允许数据在多个服务器间实时流动,即使在主服务器故障时...
- **"mysql 数据库热备份1"**:此标题表明文章主要讲解的是MySQL数据库中的热备份技术及其实施方式,数字“1”可能表示这是一个系列文章的第一部分。 #### 描述分析: - **红色字体表示同步错误指示**:在MySQL主从...
【MySQL数据库双机热备份实施方案】是指在两个服务器上配置MySQL数据库,以实现高可用性和数据安全性。在主服务器(Master)上进行的所有数据更改都会实时地、异步地复制到备用服务器(Slave)。这种配置被称为双机...
在大型的Web应用或关键业务环境中,数据库服务不能出现长时间的停机,因此需要实施双机热备份来应对硬件故障或其他潜在问题。下面将详细阐述MySQL双机热备份的实现方法。 一、复制技术 MySQL的复制机制是实现双机...
使用`mysqldump`命令进行热备份,即在不中断数据库服务的情况下导出SQL语句,这种方式适合大多数业务场景,保证了数据的一致性。 - **设置定时备份周期**:通过`crontab`设置定时任务,通常选择在业务低峰时段(如...
根据备份过程中是否允许对数据库进行读写操作,MySQL备份可以分为热备份(在线备份)和冷备份(离线备份)两种模式。 - **热备份**:可以在不停止数据库服务的情况下进行,适用于生产环境中的备份需求。 - **冷备份...
双机热备份基于MySQL内部的复制功能,在多台服务器之间建立主从关系,确保写入主数据库的数据也能被复制到从数据库中。这种方式不仅提高了数据安全性,还能够减少备份时间,并在主服务器出现故障时快速切换到从...
`xtrabackup`是由Percona开发的一个开源工具,特别适用于InnoDB存储引擎的MySQL数据库,它提供了高效且无锁的热备份功能。全量备份后,xtrabackup可以进行增量备份,仅备份自上次备份以来发生更改的数据。这大大减少...
同时,为了提高数据安全性,通常还会考虑使用网络备份、冷备份、热备份等多种备份方式,以及利用云服务提供的备份服务。此外,定期检查备份的完整性和可恢复性也非常重要,确保在需要时能顺利恢复数据。
"Windows服务器Mysql数据库双机热备" Windows服务器Mysql数据库双机热备是指在Windows服务器中,实现两台服务器中Mysql数据库的数据同步机制。这种机制可以保证数据的一致性和高可用性。 在实现双机热备之前,需要...
在实施备份时,遵循一些最佳实践至关重要: 1. 定期备份:制定备份计划并严格执行,以减少数据丢失的风险。 2. 开启数据库的二进制日志:二进制日志记录所有更改,有助于在恢复后应用后续更新,从而达到崩溃前的...
热备份允许在不影响数据库服务的情况下进行备份,而冷备份则需要停止数据库服务以保证数据一致性。 六、备份管理 为了保证数据的安全性和可靠性,应定期进行备份并妥善存储。同时,需要定期测试备份的完整性和可...
Xtrabackup是由Percona公司开发的,它的核心特性在于能够在不锁定数据库的情况下进行物理热备份,这意味着在备份过程中,系统可以继续接收读写操作,不影响正常业务运行。这种备份方式尤其适合大数据环境,因为...
然而,mysqldump在处理大型数据库时可能会消耗大量时间和资源,且不支持热备份,即在数据库运行时进行备份,可能导致数据丢失。 2. 自定义备份方案 针对上述问题,自定义备份方案通常会结合MySQL的特性,比如使用...
此外,MySQL还提供了其他备份工具,如`xtrabackup`,这是一个用于InnoDB存储引擎的开源热备份工具,可以在不锁定数据库的情况下进行物理备份,适合大数据量的环境。 在备份策略上,我们通常建议实施定期备份,例如...
1. 根据是否需要数据库离线,分为冷备份、温备份和热备份。 2. 根据要备份的数据集合的范围,分为完全备份、增量备份和差异备份。 3. 根据备份数据或文件进行直接备份数据,即物理备份。 MySQL数据库备份方法有...
1. `mysqldump` 是MySQL自带的备份工具,它支持热备份(对于InnoDB存储引擎),但速度较慢,适合小型数据库。对于MyISAM引擎的表,需要使用温备份并加读锁;而对于InnoDB,可以使用`--single-transaction`选项进行热...