1、
mysql 数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好
mysql 数据库提供了一种主从备份的机制,其实就是把主
数据库的所有的数据同时写到备份
数据库中。实现
mysql 数据库的热备份。
U'YN?bqz? LZTS 2、要想实现双机的热备首先要了解主从
数据库服务器的版本的需求。要实现热备
mysql 的版本都要高于3.2,还有一个基本的原则就是作为从
数据库的
数据库版本可以高于主
服务器数据库的版本,但是不可以低于主
服务器的
数据库版本。
dP9%x9y4O 网管u家u.bitscn@com
.Xq8-n 3、设置主
数据库服务器:
Xo#S1 "bC<AiM! a. 首先查看主
服务器的版本是否是支持热备的版本。然后查看 my.cnf(类 unix)或者 my.ini(windows)中
mysqld 配置块的配置有没有 log-bin (记录
数据库更改日志),因为
mysql 的复制机制是基于日志的复制机制,所以主
服务器一定要支持更改日志才行。然后设置要写入日志的
数据库或者不要写入日志的
数据库。这样只有您感兴趣的
数据库的更改才写入到
数据库的日志中。
P6/U=V 网管bitscn_com pvk aO%YI server-id=1 //
数据库的 id 这个应该默认是1就不用改动
W;BX:HZ , p.BDs log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称
tZ*[7$Rq+k *z 0B =n binlog-do-db=db_name //记录日志的
数据库 l,IC fy sj) binlog-ignore-db=db_name //不记录日志的
数据库 }WlJ.W *) 网管u家u.bitscn@com l!WlOsC8 以上的如果有多个
数据库用","分割开,然后设置同步
数据库的用户帐号
xp-ug0k], H}aSTaB mysql> GRANT REPLICATION SLAVE ON *.*
[ PO>hb ![z!rX3n$> -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
_1;E"=! ,,@ [[3S 4.0.2 以前的版本, 因为不支持 REPLICATION 要使用下面的语句来实现这个功能
k=3xm`;9 网管u家u.bitscn@com VK]G*& mysql> GRANT FILE ON *.*
@1{Zc$d5= XE"s0i,e -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
c]gx,(PB" zBAFdG)X 设置好主
服务器的配置文件后重新启动
数据库 $YqJ |B WLBqa N! b.锁定现有的
数据库并备份现在的数据
<+s>&k< 网管u家u.bitsCN.com
FCVcJ]^ 锁定
数据库 !S h*je;k ;u{%H~/V. mysql> FLUSH TABLES WITH READ LOCK;
M"g,;jZ&d 5sa,2PL&c 备份
数据库有两种办法一种是直接进入到
mysql 的 data 目录然后打包你需要备份
数据库的文件夹,第二种是使用
mysqldump 的方式来备份
数据库但是要加上"--master-data " 这个参数,建议使用第一种方法来备份
数据库 Wn@6ovs 中国网管论坛bbs.bitsCN.com
wCncJ=y c.查看主
服务器的状态
z+F*Bv]Y7 +_ '0d 'ph mysql> show master status\G;
UabQS*q4 uZ4x #(&1 +---------------+----------+--------------+------------------+
7_~_lxC b0\&di}-`0 | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
2;ak)Bgt ;)Bf/N~ 网管论坛bbs_bitsCN_com
+---------------+----------+--------------+------------------+
gdm{gt8&Z ;'U9* |
mysql-bin.003 | 73 | test | manual,
mysql |
I=w A~|M D6Ot:>Q" +---------------+----------+--------------+------------------+
6~/6 [w[$U '_|Io3` 记录 File 和 Position 项目的值,以后要用的。
;x.q= [[> _ BoJ& d.然后把
数据库的锁定打开
{Q>:jmW+ 网管bitscn_com
SEy9;Su mysql> UNLOCK TABLES;
Z%Wf2o, |)#&t \~* 4、设置从
服务器 >$ j PQ 0 _DG,>C a.首先设置
数据库的配置文件
/kZ]m lk`a0tW server-id=n //设置
数据库 id 默认主
服务器是1可以随便设置但是如果有多台从
服务器则不能重复。
P{L*ifK# 网管网www_bitscn_com q`Y/uO+MpF master-host=db-master.mycompany.com //主
服务器的IP地址或者域名
c< Kmp6T a67; j`*m master-port=3306 //主
数据库的端口号
XW.R :E# \aZb3h master-user=pertinax //同步
数据库的用户
p<}m\-k Y=T;aK<r master-password=freitag //同步
数据库的密码
61 ="ylF 中国网管联盟bitsCN.com
F:V?1e G& master-connect-retry=60 //如果从
服务器发现主
服务器断掉,重新连接的时间差
+2_!.pU= P%F<D report-host=db-slave.mycompany.com //报告错误的
服务器 :P[|t_C$2 %^iry|Fq b.把从主
数据库服务器备份出来的
数据库导入到从
服务器中
!MI]OB** :?;f8]uY 网管网www_bitscn_com c.然后启动从
数据库服务器,如果启动的时候没有加上 "--skip-slave-start" 这个参数则进入到
mysql 中
w " ]Y$ (=WWXs mysql> slave stop; //停止 slave 的服务
{|N#i>@= :-PZtjle d.设置主
服务器的各种参数
:G`G)uUFm+ b=|qp*O]bp mysql> CHANGE MASTER TO
S~Eqn 0\! 网管联盟bitsCN_com T-dQ=>}\ -> MASTER_HOST='master_host_name', //主
服务器的IP地址
4D[]=O$ &z$ Ggf^ -> MASTER_USER='replication_user_name', //同步
数据库的用户
^vQQ7;EP H,;NO6 -> MASTER_PASSWORD='replication_password', //同步
数据库的密码
9XT UB`C k{ _x)H@_% -> MASTER_LOG_FILE='recorded_log_file_name', //主
服务器二进制日志的文件名,前面要求记住的参
Ygkj1Z 网管网www.bitscn.com Lm}Qf_ntR -> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)
>a/Vw@nBU/ 5'3%\KB e.启动同步
数据库的线程
%bV0=\=X G ^WzNu mysql> slave start;
'z0K.Gb 4x(pa 查看
数据库的同步情况吧。如果能够成功同步那就恭喜了!
T~5wULw' 2 +]~FCbU 网管联盟bitsCN@com
查看主从
服务器的状态
]X#TZ+8 +jP}<R>/ mysql> SHOW PROCESSLIST\G //可以查看
mysql 的进程看看是否有监听的进程
3 l_ yx} _SrVC$j 如果日志太大清除日志的步骤如下
kx(h S=2V+c' G\ 1.锁定主
数据库 ]]k%g@W ?LW$LHa[y mysql> FLUSH TABLES WITH READ LOCK;
~<POvL[(9' 中国网管联盟bitsCN.com QL/:I4u] 2.停掉从
数据库的 slave
CaigYOanKb Mtp>^~*K3 mysql> slave stop;
*l<=W4 ] E)^&%a_~ 3.查看主
数据库的日志文件名和日志文件的 position
[Fblr>e Dp &O|/,Z? show master status;
Oq+/2c/r @^(@zK8ym 网管网www_bitscn_com
+---------------+----------+--------------+------------------+
X:kDfEc6(M eQ6s j | File | Position | Binlog_do_db | Binlog_ignore_db |
c"ku5XMS |V~/Ri]CQ +---------------+----------+--------------+------------------+
30ftb}< W]W5WE|mv | louis-bin.001 | 79 | |
mysql |
?WPt"lP a53=0 .n +---------------+----------+--------------+------------------+
;9b\/L?0 网管u家u.bitscn@com
?>Cdgn9^w 4.解开主
数据库的锁
CJDS+ }@ O^lO1C mysql> unlock tables;
zGw ( K] |p y:HBuW| 5.更新从
数据库中主
数据库的信息
g<U)F KP=as89+h mysql> CHANGE MASTER TO
VC U+8 K 5LjQ1ql} 网管联盟bitsCN@com
-> MASTER_HOST='master_host_name', //主
服务器的IP地址
PMrM2| MCdR/vGZ[ -> MASTER_USER='replication_user_name', //同步
数据库的用户
}U{cnd5 a.^*"oT\ -> MASTER_PASSWORD='replication_password', //同步
数据库的密码
+*$c|as ]}3Xyw -> MASTER_LOG_FILE='recorded_log_file_name', //主
服务器二进制日志的文件名,前面要求记住的参数
#;?!T} , 网管联盟bitsCN@com pPZ6 64 O -> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)
#&Q ld9 P (JOIdfr 6.启动从
数据库的 slave
H!e -?@ G={E hR2 mysql> slave start;