前面的文章中http://5148737.blog.51cto.com/5138737/1570274 讲了如何进行linux中的mysql热备份,属于一主一从的情况,但是大部分情况都是多台主机备份到一台从机,节省设备嘛。
找了好久,才找到解决方法,写下来,因为真的忘的很快。
主机的配置都是一样的,修改配置文件,加入server-id 等的配置,重启,创建slave用户并授权,查看master状态,到此主机结束。
接下来就是从机了,也主要是从机了。
因为我们需要对数据库进行change master操作,如果只有一个数据库实例的话,那前者的change master设置的参数,将被后者覆盖,所以,问题来了,如何创建多个数据库实例。
为从机创建多个数据库实例
-
修改从机配置文件
采用的是mysqld_multi的方法,主要修改配置文件/etc/my.cnf,具体的mysqld_multi的用法自己度娘吧,我这里直接贴出我的配置了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[mysqld_multi]
mysqld =
/usr/bin/mysqld_safe
user = root
password = chinacache.gz
log =
/var/lib/mysql/multi
.log <!--错误日志打印处 -->
[mysqld3305] <!--模块名,mysqldXX xx处只能为数字 -- >
port = 3305 <!--指定端口 -->
log-error=
/var/lib/mysql3305/mysqld-error
.log <!--指定错误日志 -->
pid-
file
=
/var/lib/mysql3305/mysqld
.pid <!--指定pid -->
datadir=
/var/lib/mysql3305
<!--指定basedir -->
socket=
/var/lib/mysql3305/mysql
.sock <!--指定basedir -->
server-
id
= 195 <!--指定server-
id
-->
log-bin=
/var/lib/mysql3305/mysqld-relay-bin
replicate-
do
-db=cdnquality <!--指定主机中需要备份的数据库 -->
user = mysql
[mysqld3306] <!--多个数据库实例,来多个模块 -->
port = 3306
log-error=
/var/lib/mysql3306/mysqld-error
.log
pid-
file
=
/var/lib/mysql3306/mysqld
.pid
datadir=
/var/lib/mysql3306
socket=
/var/lib/mysql3306/mysql
.sock
server-
id
= 196
log-bin=
/var/lib/mysql3306/mysqld-relay-bin
replicate-
do
-db=vbumng
user = mysql
|
2.创建多个数据库实例
1
2
|
mysql_install_db --datadir=
/var/lib/mysql3305
--user=mysql
mysql_install_db --datadir=
/var/lib/mysql3306
--user=mysql
|
给数据库授予 mysql 用户的权限
1
2
|
chown
-R mysql
/var/lib/mysql3305
chown
-R mysql
/var/lib/mysql3306
|
3.启动多个数据库实例
这里启动不是采用常规的 /etc/init.d/mysqld start 启动,需要采用mysqld_multi的方式启动
1
2
3
4
5
|
mysqld_multi --defaults-
file
=
/etc/my
.cnf start 3306
//
这里的3306对应my.cnf中的模块名
mysqld_multi --defaults-
file
=
/etc/my
.cnf start 3305
//
可以查看启动状态
netstat
-ntlp|
grep
mysql
|
ps:如果这里可以看到每个启动的数据库实例的话,那基本就大功告成了。
4.分别进入每个数据库实例,进行change master操作
进入不同的数据库的时候,要指定port或者sock
1
2
3
4
5
6
7
8
9
10
11
|
mysql -uroot -p -P 3305 -S
/var/lib/mysql3305/mysql
.sock
从主机复制需要备份的数据库
对数据库进行change master 配置
启动slave start slave
查看slave状态 show slave status\G
mysql -uroot -p -P 3306 -S
/var/lib/mysql3306/mysql
.sock
从主机复制需要备份的数据库
对数据库进行change master 配置
启动slave start slave
查看slave状态 show slave status\G
|
ps:进入不同数据库实例后,操作的步骤就一样的,可以参考前面的一主一从的情况
本文转自布拉君君 51CTO博客,原文链接:http://blog.51cto.com/5148737/1570305,如需转载请自行联系原作者