`
xiaofengtoo
  • 浏览: 493001 次
  • 性别: Icon_minigender_1
  • 来自: xiamen
社区版块
存档分类
最新评论

实现MySQL数据库双机热备份

    博客分类:
  • DB
阅读更多


1、MySQL数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好MySQL数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现MySQL数据库的热备份。
2、要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备MySQL的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。
3、设置主数据库服务器:
a. 首先查看主服务器的版本是否是支持热备的版本。然后查看my.cnf(类Unix)或者my.ini(Windows)中MySQLd配置块的配置有没有 log-bin(记录数据库更改日志),因为MySQL的复制机制是基于日志的复制机制,所以主服务器一定要支持更改日志才行。然后设置要写入日志的数据库或者不要写入日志的数据库。这样只有您感兴趣的数据库的更改才写入到数据库的日志中。
server-id=1 //数据库的id这个应该默认是1就不用改动
log-bin=log_name //日志文件的名称,
//这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称
binlog-do-db=db_name //记录日志的数据库()
binlog-ignore-db=db_name //不记录日志的数据库
以上的如果有多个数据库重复相应选项即可.
然后设置同步数据库的用户账号
MySQL> GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO 'slaveuser'@'%' IDENTIFIED BY 'slavepass';
4.0.2以前的版本, 因为不支持REPLICATION 要使用下面的语句来实现这个功能
MySQL> GRANT FILE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
然后执行
MySQL> FLUSH PRIVILEGES;
设置好主服务器的配置文件后重新启动数据库
b.锁定现有的数据库并备份现在的数据
锁定数据库
MySQL> FLUSH TABLES WITH READ LOCK;
备份数据库有两种办法一种是直接进入到MySQL的data目录然后打包你需要备份数据库的文件夹,第二种是使用MySQLdump的方式来备份数据库但是要加上"--master-data " 这个参数,建议使用第一种方法来备份数据库
c.查看主服务器的状态
MySQL> show master status\G;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| MySQL-bin.003 | 73 | test | manual,MySQL 1
|
+---------------+----------+--------------+------------------+
记录File 和 Position 项目的值,以后要用的。
d.然后把数据库的锁定打开
MySQL> UNLOCK TABLES;
4、设置从服务器
a.首先设置数据库的配置文件
server-id=n //设置数据库id默认主服务器是1
//可以随便设置但是如果有多台从服务器则不能重复。
master-host=db-master.mycompany.com //主服务器的IP地址或者域名
master-port=3306 //主数据库的端口号
master-user=pertinax //同步数据库的用户
master-password=freitag //同步数据库的密码
master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差
#report-host=db-slave.mycompany.com //报告错误的服务器
replicate-do-db=需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
b.把从主数据库服务器备份出来的数据库导入到从服务器中
c.然后启动从数据库服务器,如果启动的时候没有加上"--skip-slave-start"这个参数则进入到MySQL中
MySQL> slave stop; //停止slave的服务
d.设置主服务器的各种参数
MySQL> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服务器的IP地址
-> MASTER_USER='replication_user_name', //同步数据库的用户
-> MASTER_PASSWORD='replication_password', //同步数据库的密码
-> MASTER_LOG_FILE='recorded_log_file_name',
//主服务器二进制日志的文件名(前面要求记住的参数)
-> MASTER_LOG_POS=recorded_log_position;
//日志文件的开始位置(前面要求记住的参数)
e.启动同步数据库的线程
MySQL> slave start;
查看数据库的同步情况吧。如果能够成功同步那就恭喜了!
查看主从服务器的状态
MySQL> SHOW PROCESSLIST\G //可以查看MySQL的进程看看是否有监听的进程
2
如果日志太大清除日志的步骤如下:
1>.锁定主数据库
MySQL> FLUSH TABLES WITH READ LOCK;
2>.停掉从数据库的slave
MySQL> slave stop;
3>.查看主数据库的日志文件名和日志文件的position
show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| louis-bin.001 | 79 | | MySQL |
+---------------+----------+--------------+------------------+
4>.解开主数据库的锁
MySQL> unlock tables;
5>.更新从数据库中主数据库的信息
MySQL> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服务器的IP地址
-> MASTER_USER='replication_user_name', //同步数据库的用户
-> MASTER_PASSWORD='replication_password', //同步数据库的密码
-> MASTER_LOG_FILE='recorded_log_file_name',
//主服务器二进制日志的文件名(前面要求记住的参数)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)
6>.启动从数据库的slave
MySQL> slave start;
MySQL主从服务器(Replication)的设置
一般使用MySQL的时候,如果数据量不大,我们都使用一台MySQL服务器,备份的时候使用mysqldump工具就可以了,但是随着业务不断发展,问题出现了:
首先:数据量往往直线上升,单独一台数据库服务器开始出现性能的瓶颈,数据访问越来越慢。
其次:备份也变得困难了,因为mysqldump是导出一份文本文件,而数据量特别大的时候,这样的备份往往需要很长时间,可能有人会说,我们可以直接通过拷贝数据文件来备份数据库,这样很方便,快捷,不错,这样是比mysqldump方便快捷,但是,直接拷贝数据文件备份的方式要求我们必须先关闭 mysql服务,然后再拷贝数据文件,否则,你拷贝的文件很可能是坏的。而实际运行的mysql服务往往要求在任何时候都不可以停止服务,所以这样的备份方式在此情况下不可行。
如果你遇到了类似上面的问题,你就可以使用建立MySQL主从服务器的方式来解决,下面先来看看主从服务器的设置:
前提:MySQL主从服务器最好使用相同的软件版本,以避免不不可预期的故障。 3
首先设置MySQL主服务器:
在主服务器上为从服务器建立一个用户:
grant replication slave on *.* to '用户名'@' 主机' identified by '密码';
编辑主服务器的配置文件:/etc/my.cnf
server-id = 1 log-bin binlog-do-db=需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可 binlog-ignore-db=不需要备份的数据库苦命,如果备份多个数据库,重复设置这个选项即可
编辑从服务器的配置文件:/etc/my.cnf
server-id=2 master-host=主机 master-user=用户名 master-password=密码 master-port=端口 replicate-do-db=需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
记得先手动同步一下主从服务器中要备份的数据库,然后重启主,从服务器。
要验证主从设置是否已经成功,可以登录从服务器输入如下命令:
mysql> show slave status\G
会得到类似下面的列表:
Slave_IO_Running: Yes Slave_SQL_Running: Yes
如果这两个选项不全是Yes,那就说明你前面某个步骤配置错了。
如果你的设置是正确的,尝试在主服务器上插入若干条记录,然后你再转到从服务器,会发现相应的新记录已经自动同步过来了。
如果你的主从服务器已经配置好了,那么你在应用程序中,只要保证所有的insert/delete/update操作是在主服务器上进行的,那么相应的数据变化会自动同步到从服务器上,这样,我们就可以把select操作分担到多台从数据库上,从而降低服务器的载荷。
如果你想使用复制数据文件的方式来备份数据库,只要在从服务器上的mysql命令行先键入slave stop;然后复制数据库文件,复制好了,再在mysql命令行键入slave start;启动从服务器,这样就即备份了数据有保证了数据完整性,而且整个过程中主服务器的mysql无需停止。
-----------------------------------------------------------------------------------
提示:如果修改了主服务器的配置,记得删除从服务器上的master.info文件。否则从服务器使用的还是老配置,可能会导致错误。
-----------------------------------------------------------------------------------
注意:关于要复制多个数据库时,binlog-do-db和replicate-do-db选项的设置,网上很多人说是用半角逗号分隔,经过测试,这样的说法是错误的,MySQL官方文档也明确指出,如果要备份多个数据库,只要重复设置相应选项就可以了。
比如:
binlog-do-db=a binlog-do-db=b
replicate-do-db=a replicate-do-db=b
-----------------------------------------------------------------------------------
补充: 4
5
在从服务器上使用show slave status Slave_IO_Running,为No,则说明IO_THREAD没有启动,请执行slave start [IO_THREAD] Slave_SQL_Running为No则复制出错,查看Last_error字段排除错误后执行slave start [SQL_THREAD] 查看Slave_IO_State字段 空 //复制没有启动 Connecting to master//没有连接上master Waiting for master to send event//已经连上
补充:可以使用 LOAD DATA FROM MASTER语句来建立slave。但有约束条件:数据表要全部是MyISAM表,必须有SUPER权限,master的复制用户必须具备RELOAD和SUPER权限。在master端执行RESET MASTER清除已有的日志变更,此时slave端会因为找不到master日志无法启动IO_THREAD,请清空data目录下 relay-log.info,hosname-relay-bin*等文件重新启动mysql 中继日志文件默认的文件为hostname-relay-bin.nnn和hostname-relay-bin.index。可用从服务器的-- relay-log和--relay-log-index选项修改。在从服务器中还有一个relay-log.info中继信息文件,可用 --relay-log-info-file启动选项修改文件名。 双机互备则是两个mysql同时配置为master及slave
主服务器上的相关命令: show master status show slave hosts show logs show binlog events purge logs to 'log_name' purge logs before 'date' reset master(老版本flush master) set sql_log_bin=
从服务器上的相关命令: slave start slave stop SLAVE STOP IO_THREAD //此线程把master段的日志写到本地 SLAVE start IO_THREAD SLAVE STOP SQL_THREAD //此线程把写到本地的日志应用于数据库 SLAVE start SQL_THREAD reset slave SET GLOBAL SQL_SLAVE_SKIP_COUNTER load data from master show slave status(SUPER,REPLICATION CLIENT) CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= //动态改变master信息 PURGE MASTER [before 'date'] 删除master端已同步过的日志

分享到:
评论

相关推荐

    MySQL数据库双机热备份实施方案.pdf

    【MySQL数据库双机热备份实施方案】是指在两个服务器上配置MySQL数据库,以实现高可用性和数据安全性。在主服务器(Master)上进行的所有数据更改都会实时地、异步地复制到备用服务器(Slave)。这种配置被称为双机...

    Mysql 数据库双机热备的配置

    Mysql 数据库双机热备的配置.ysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写...实现mysql数据库的热备份。

    MYSQL如何实现双机热备份

    MySQL数据库的双机热备份,也称为高可用性(High Availability, HA)配置,是确保数据安全性、系统连续性和业务不中断的关键技术。在大型的Web应用或关键业务环境中,数据库服务不能出现长时间的停机,因此需要实施...

    MySQL双机热备份试验.pdf

    ### MySQL双机热备份知识点详解 #### 一、MySQL双机热备份概念 **双机热备份**(Hot Standby)是指在两台服务器之间通过数据同步的方式保持数据的一致性,一旦主服务器出现故障,备服务器能够迅速接管服务,确保...

    ubuntu server下安装mysql 以及设置双机热备份

    Ubuntu Server 下安装 MySQL 及设置双机热备份 一、 Ubuntu Server 下安装 MySQL 在 Ubuntu Server 中安装 MySQL 服务器是一件非常简单的事情。我们可以使用 apt-get install 命令来安装 MySQL 服务器。首先,我们...

    服务器双机热备份方案

    服务器双机热备份方案是指通过双机热备软件对计算机的操作系统、网络系统和数据库进行实时检测,当其中任何一个系统出现问题时,双机软件能自动运行到备用服务器上,让备用服务器接管主机的工作,达到让计算机永不...

    MySQL数据库双机热备的配置.docx

    MySQL数据库双机热备是一种高可用性和容灾恢复策略,旨在确保在一台服务器出现故障时,另一台服务器能够无缝接管工作,保持业务连续性。在互联网行业中,由于数据的重要性,MySQL数据库的双机热备配置是常见的做法。...

    MySQL双机热备份实施方案.pdf

    实现MySQL双机热备份主要涉及以下步骤: 1. **主服务器授权**:在主服务器上创建一个用户(如`backup`),并为其分配权限,允许其从指定IP(从服务器的IP)连接并进行更新。例如,命令`GRANT REPLICATION SLAVE ON ...

    双机热备份在高校教学资源点播系统中的应用.pdf

    本文主要介绍了如何在Linux环境中,利用MySQL数据库实现双机热备份,以应对可能的服务器故障。 在高校教学资源点播系统中,随着资源数量的增长和访问用户的增加,系统稳定性和数据安全性成为关注焦点。双机热备份...

    windows下mysql双机热备.doc

    Windows服务器Mysql数据库双机热备是指在Windows服务器中,实现两台服务器中Mysql数据库的数据同步机制。这种机制可以保证数据的一致性和高可用性。 在实现双机热备之前,需要准备两台服务器,安装Mysql服务器,...

    mysql双机热备份的实现步骤

    利用该功能可以实现两个数据库同步,主从模式,互相备份模式的功能。 数据库同步复制功能的设置都在mysql的设置文件中体现。mysql的配置文件(一般是my.cnf) 在unix环境下在/etc/mysql/my.cnf 或者在mysql用户的...

    Linux下Mysql双机备份

    双机热备份基于MySQL内部的复制功能,在多台服务器之间建立主从关系,确保写入主数据库的数据也能被复制到从数据库中。这种方式不仅提高了数据安全性,还能够减少备份时间,并在主服务器出现故障时快速切换到从...

    Mysql 数据库双机热备的配置方法

    实现mysql数据库的热备份。 2。要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备mysql的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,...

    MySQL数据库相关知识

    教程名称:MySQL数据库相关知识课程目录:【】mysql异地数据库备份实例代码【】MySQL数据库双机热备份如何实现【】MySQL数据库备份的简单知识【】MySQL数据库恢复过程【】SQL索引失效的5种情况分析【】windows下如何...

    Mysql 双机热备(Windows)

    (Windows)下Mysql双机热备 MySQL主从服务器(Replication)的设置:1.首先在主服务器上为从服务器建立一个账户。2.登录从服务器使用步骤一申请的用户名和密码访问主数据库如果可以访问代表建立用户成功。(双机热备则...

    MySQL-Cluster双机集群+HA高可用+负载均衡配置手册

    MySQL-Cluster可以实现高可用性,通过数据复制和负载均衡,可以实现服务器的热备份和自动故障转移,使得数据库服务更加可靠和稳定。 负载均衡 MySQL-Cluster可以实现负载均衡,通过Daemon node和Management node...

Global site tag (gtag.js) - Google Analytics