mysql(3) 创建replication
来源:互联网 发布:淘宝店铺零库存怎么做 编辑:程序博客网 时间:2024/05/22 03:16
mysql虽然是免费的数据库,但是在提高数据库的可用性方面,做的还是可以的。
本文主要是记录笔者 创建mysql的replication的过程,遇到的问题,及相关的步骤。
笔者是环境 是两台数据库分别装在johnny-test-2 和 johnny-test-3上。 其中 johnny-test-2作为 master, johnny-test-3作为 slave
1. 为什么 需要replication
这个问题不需要回答,呵呵。
随着对数据库性能的要求越来越高,我们可能 在实际应用环境中, 将其中 一台作为主数据库,主要负责数据的写入。 另外 有其余的几台数据库负责对外提供 服务, 包括 读, 数据报表 等 等 。 或者是作为 数据库备份的一种方式 , replication发挥 了重要的作用。
2. 如何实现 Replication
2.1 Master的设置
2.1.1 binary log 设置
首先 MySQL的replication是基于binary log机制之上的, 数据库操作数据, 然后将update 或者change作为一种事件写到binary log 中。
所以 我们必须要enable master的binary log 功能 的,如下
log-bin是用来 设置 bin log的文件前缀,
binlog_format设置为混合方式, 这个是默认的。
再加上sync_binlog设置
这样 就可以在mysql 的目录下,看到如下的binlog
2.1.2 设置 server-id
server-id 必须要设置, 不然的话, 系统会使用默认的0. 这个id主要用来区别组内的每个mysql server。
必须是正值 ,可以 在1-(2**32 -1)内取值。 放在[mysqld]内
2.1.3 设置 SSL
这个笔者 会单独用一个章节来说明这个。 当写好之后,会在这里放一个链接 ^_^
在上面的截图中,可以看到已经设置了ssl的内容。
2.1.4 设置用于replication的账户
通过如下的命令来实现
CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass'; //设定用户GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; //给用户赋权限 flush privileges;//刷新
2.1.5 获得master 的bin-log数据
为了保证在做replication之前,master 的数据是最新的更新,可以使用命令
FLUSH TABLES WITH READ LOCK;
对于InnoDB 来说, 上面的命令会block commit命令,保证了数据不会被再次的更新, 可以看到当前的状态
然后使用
show master status;来查看当前master的状态 如下 :
上面这个数据,在做slave 的设定时,很重要,所以要记录好File和Position
这里可以 对master,进行 UNLOCK tables;
至此,master的工作基本完成了, 除了ssl的配置, 笔者将在另外的文章里描述。
2.2 配置 slave
2.2.1 创建与master 相同的环境
这个可以通过 几种方式来完成 ,
1. 如果说一开始是新的数据库环境做replication,那是最好了,没有什么要同步的。
2. 如果master中,本来有大量的数据, 可以考虑用msqldump 对master做snapshot,然后在slave上rollforward
3. 也可以 直接 从master中, 把要的数据文件直接拷贝到slave
由于笔者是新创建的环境,所以 没有做这一步,如果有兴趣的同学可以到mysql的官网上查看 相关的内容 :
2.2.2 设置master 的内容
在slave上使用了start slave 命令之后,就会在/var/lib/mysql/下面生成 了新的文件 master.info和relay-log.info, 一开始里面是没有内容的会生成空的。
我们需要stop slave ,然后使用change master to 命令来设置关于master 的相关信息,包括 master_host,master_user,master_password, master_log_file, master_log_pos等参数 。
我们也可以设定访问master ssl的相关参数,以提高安全性
之后, 我们来看看现在master.info里面的内容
2.3 启动replication
完成 上面 2.1与2.2 的设定之后,我们就可以开始replicaton的动作了,在slave上使用start slave 命令就可以
用show slave status, 我们可以看到下面的内容。
然后在master 上,做一些对数据的DML 的操作, 再在slave 上查看,会发现数据已经被 replication过来 了
希望上面的过程 ,对大家有用。
- mysql(3) 创建replication
- MySQL主从复制服务器(replication)创建笔记
- Mysql Replication
- mysql replication
- mysql replication
- Mysql replication
- Mysql Replication
- mysql replication
- mysql-replication
- MySQL Replication
- MySQL:MySQL Replication
- SQLServer Replication 创建技巧
- Mysql 5.0 Replication 说明
- MySQL Replication(复制)基本原理
- MYSQL Replication优化总结
- 设置MySQL同步(Replication)
- MySQL Master-Slave Replication
- Mysql数据库做多台replication
- Win7下搭建Python开发环境[py+pyqt4+Eric4]
- arguments 对象之callee属性
- Oracle dmp的imp和exp
- 男人的品味
- 开始学习Windows Phone 7开发
- mysql(3) 创建replication
- 第一个T-SQL函数
- Linux内核抢占实现机制分析
- 是什么成就一个伟大的程序员?
- 常用SQL语句整理
- C++下基于COM的XML格式字符串解析,生成
- 禁止多人使用同一账号在系统上进行操作
- 页面刷新后applet中JLabel无法正常显示HTML文本
- 如何使用java synchronized进行线程同步