Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13914
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-25 17:28
文章分类

全部博文(4)

文章存档

2015年(4)

我的朋友

分类: Mysql/postgreSQL

2015-05-20 15:16:23

声明:这不是原创,也不是转贴,里面的东西都是从别人那里东一块,西一块的拼接起来的,所以就把类型变成了【翻译】

因为不想影响现有的服务器的运行,就另外用了两个新的服务器,一共三台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
一、备份数据库
  1. 因为数据量不是很大,所以使用的mysqldump工具,只针对特定的一个数据库,其他类型,请百度
  2. mysqldump -u root -p    dbname> dbdata.sql (表结构,数据,触发器)
  3. mysqldump -uroot -p -hlocalhost --n -d -t -R --triggers=false dbname > dbproc.sql (procedure + function - trigger
  4. 导出来的数据,SCP到目标服务器B,因为是测试服务器,数据可以断档,所以直接用了 

二、B服务器初始化,安装56的Mysql,设置为Master
  1. 去官网下yum的repo,选择好自己需要的版本,我的是 http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
  2. 安装这个源, sudo yum localinstall mysql-community-release-el6-5.noarch.rpm
  3. 查看安装源状态及本地是否已经有旧版本 sudo yum list installed | grep mysql*
  4. 安装数据库,sudo yum install mysql-community (自动匹配需要的各种依赖关系)
  5. 初始化数据库 mysql_secure_installation ? 
  6. 导入服务器A的数据 
  7. mysql> source dbdata.sql
  8. mysql> source dbproc.sql
  9. 给服务器C一个Mysql账号,用来读取日志 
    1. grant replication slave, replication client on *.* to repl@'10.10.10.3' identified by 'password'

  10. 更新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

  1. 官网下载 percona xtrabackup ,
  2. 解压后把bin里面的东西 sudo cp ./bin/* /user/bin/
  3. innobackupex --user=root --password=rootpassword --defaults-file=/etc/my.cnf --database=test123 ./
  4. 会在本地生产一个以日期命名的文件夹,把这个文件夹压缩后得到 serverBdata.tar SCP到目标服务器C,以进行主从前的数据一致
三、C服务器初始化,安装56的Mysql,设置为Slave
  1. 初始化与B服务器一样,要用不一样的 server-id=1010103
  2. 拿到上面serverBdata.tar,解压,看到一个以日期命名的文件夹
  3. sudo innobackupex --user=root --password=ark~eddy*2015 --apply-log ./folder-name/
  4. 启动Mysql,把该机器设置为从机
  5. 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
  6. master_host, master_user, master_password 由 serverB提供
  7. 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

  8. 启动salve,start slave
  9. 查看slave,show slave status,看不到报错之类的就差不多了
  10. 去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

阅读(1455) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:开启慢查询日志LOG

给主人留下些什么吧!~~