Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10326881
  • 博文数量: 1669
  • 博客积分: 16831
  • 博客等级: 上将
  • 技术积分: 12594
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 07:23
个人简介

柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!

文章分类

全部博文(1669)

文章存档

2023年(4)

2022年(1)

2021年(10)

2020年(24)

2019年(4)

2018年(19)

2017年(66)

2016年(60)

2015年(49)

2014年(201)

2013年(221)

2012年(638)

2011年(372)

分类: Mysql/postgreSQL

2012-10-19 18:59:34

mysql主从数据复制(链式结构 )  

2011-10-09 16:24:07|  分类: my复制 |  标签: |字号 

一、为从数据库设置复制账号

grant REPLICATION SLAVE on *.* To  identified by 'backuppwd'

flush privileges

 

二、导出数据

(1)直接复制数据文件目录方法

a. 停止数据库写数据

flush tables with read lock

 

b.显示此时master的状态

show master status

计下此时主数据库的binlog的当前文件及文件中的偏移位置(主数据库必须打开log-bin选项),这个在启动从数据库时需要,以便使从数据库启动时知道从哪里执行主数据库的改变(执行主数据的日志)

+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73       |              |                  |
+---------------+----------+--------------+------------------+

 

c.innodb表需要关闭数据库

mysqladmin -uroot shutdown

 

d.导出数据

tar cvfz data.tar.gz 数据库文件目录

 

e.解锁所有表

unlock tables

 

(2)利用mysqldump导出

nohup /usr/local/mysql/bin/mysqldump -u -p -h db --master-data --sock=/usr/local/mysql/tmp/mysqld.sock > master.sql &

 

三、将数据导入从数据库

(1)直接复制到数据目录

cp命令(确保数据文件目录的权限)

(2)命令导入

mysql -u -p -h db < master.sql

 

四、配置数据库配置文件

(1)主数据库

[mysqld]
log-bin=mysql-bin
server-id=1


(2)从数据库

[mysqld]
server-id=2
master-host=
master-user=
master-password=
master-port=3306
master-connect-retry=60
replicate-do-db=backup_db    #要复制的数据库
log-slave-updates  #可以作为master,或者是在从数据库启动命令时加入参数--logs-slave-updates,可以配置“主-->从-->从”的链式结构
read-only=1

 

五、启动从数据库

1.用--skip-slave-start选项启动从服务器,以便它不立即尝试连接主服务器

2.设置从数据库

在从服务器上执行下面的语句,用你的系统的实际值替换选项值:
mysql> CHANGE MASTER TO
  ->     MASTER_HOST='master_host_name',
  ->     MASTER_USER='replication_user_name',
  ->     MASTER_PASSWORD='replication_password',
  ->     MASTER_LOG_FILE='recorded_log_file_name',
  ->     MASTER_LOG_POS=recorded_log_position;

3.开启从数据库

start slave

 

六、主、从数据库进程

1.主数据库进程

   Binlog Dump线程

2.从数据库进程

   复制从I/O线程:与主数据库连接

   复制从SQL线程状态:执行从主数据库得到的binlog日志

 

七、从数据库日志文件

data目录下:
master.info               ---- 连接的主数据库的相关信息
relay-log.info            ---- 从数据库执行的相关信息

 

八、dump的--master-data选项

--master-data[=value]

该选项将二进制日志的位置和文件名写入到输出中。该选项要求有RELOAD权限,并且必须启用二进制日志。如果该选项值等于1,位置和文件名被写入CHANGE MASTER语句形式的转储输出,如果你使用该SQL转储主服务器以设置从服务器,从服务器从主服务器二进制日志的正确位置开始。如果选项值等于2,CHANGE MASTER语句被写成SQL注释。如果value被省略,这是默认动作。



通常情况,从服务器从主服务器接收到的更新不记入它的二进制日志。该选项告诉从服务器将其SQL线程执行的更新记入到从服务器自己的二进制日志。为了使该选项生效,还必须用--logs-bin选项启动从服务器以启用二进制日志。如果想要应用链式复制服务器,应使用--logs-slave-updates。例如,可能你想要这样设置:
A -> B -> C
阅读(1483) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~