声明:这不是原创,也不是转贴,里面的东西都是从别人那里东一块,西一块的拼接起来的,所以就把类型变成了【翻译】
因为不想影响现有的服务器的运行,就另外用了两个新的服务器,一共三台A,B,C(都是CentOS 6.3)
-
A,Web服务器,55版本Mysql 10.10.10.1
-
B,Mysql服务器,56版本,主 10.10.10.2
-
C,Mysql服务器,56版本,从 10.10.10.3
一、备份数据库
-
因为数据量不是很大,所以使用的mysqldump工具,只针对特定的一个数据库,其他类型,请百度
-
mysqldump -u root -p dbname> dbdata.sql (表结构,数据,触发器)
-
mysqldump -uroot -p -hlocalhost --n -d -t -R --triggers=false dbname > dbproc.sql (procedure + function - trigger)
-
导出来的数据,SCP到目标服务器B,因为是测试服务器,数据可以断档,所以直接用了
二、
B服务器初始化,安装56的Mysql,设置为Master
-
去官网下yum的repo,选择好自己需要的版本,我的是 http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
-
安装这个源, sudo yum localinstall mysql-community-release-el6-5.noarch.rpm
-
查看安装源状态及本地是否已经有旧版本 sudo yum list installed | grep mysql*
-
安装数据库,sudo yum install mysql-community (自动匹配需要的各种依赖关系)
-
初始化数据库 mysql_secure_installation ?
-
导入服务器A的数据
-
mysql> source dbdata.sql
-
mysql> source dbproc.sql
-
给服务器C一个Mysql账号,用来读取日志
-
grant replication slave, replication client on *.* to repl@'10.10.10.3' identified by 'password'
-
更新my.cnf,包括下面这些参数
-
log_bin = /var/log/mysql/mysql-bin.log 二进制日志,为了主从复制用,必选
log_bin_trust_function_creators = 1 DUMP文件引入function 用,可选
server-id = 1010102 本机的ID,一般是IP地址去掉点,用来区别其他机器 , 必选
innodb_file_per_table = 1 是否给所有表都使用独立表空间,可选,推荐
binlog-do-db = xxxxxx 需要被二进制日志记录的数据库,可选(缺省为全数据库)
binlog_ignore_db = xxxxxx 不想被二进制日志记录的数据库,可选(缺省为无)
重启数据库,启动二进制日志备份,为了给C服务器数据,使用工具 xtrabackup
-
官网下载 percona xtrabackup ,
-
解压后把bin里面的东西 sudo cp ./bin/* /user/bin/
-
innobackupex --user=root --password=rootpassword --defaults-file=/etc/my.cnf --database=test123 ./
-
会在本地生产一个以日期命名的文件夹,把这个文件夹压缩后得到 serverBdata.tar SCP到目标服务器C,以进行主从前的数据一致
三、C
服务器初始化,安装56的Mysql,设置为Slave
-
初始化与B服务器一样,要用不一样的 server-id=1010103
-
拿到上面serverBdata.tar,解压,看到一个以日期命名的文件夹
-
sudo innobackupex --user=root --password=ark~eddy*2015 --apply-log ./folder-name/
-
启动Mysql,把该机器设置为从机
-
change master to master_host='10.10.10.2', master_user='repl', master_password='password', master_log_file='mysql-bin.000132', master_log_pos=307132;
-
master_host, master_user, master_password 由 serverB提供
-
master_log_file, master_log_pos 由 2中的文件夹中的 xtrabackup_binlog_info提供
[brooks@10.10.10.3 2015-05-19_20-16-18]$ cat xtrabackup_binlog_info
mysql-bin.000132 307132
-
启动salve,start slave
-
查看slave,show slave status,看不到报错之类的就差不多了
-
去serverB 手动插入一个数据,检查serverC是否也更新了
四、A服务器切换数据库源为B,依各开发框架是不是支持读写分离了
五、过程中出现的几个问题(机器512内存,所以奇怪的问题很多)
mysqld dead, with pid file exists => 删除 mysql.sock => sudo killall -9 mysqld
mysqld dead, with subsys lock => 删除 /var/lock/subsys/mysqld
阅读(1477) | 评论(0) | 转发(0) |