第一步:编辑主服务器 MySQL 的 my.ini 文件。
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1
注意,上面的编辑应该是在 [wampmysqld] 节点下面进行编辑,如下图,然后按照下面的方式重启MySQL。
shell> mysqladmin -u root -p shutdown #关闭MySQL
shell> mysqld --remove wampmysqld
#移除
wampmysqld 服务
shell>mysqld --install wampmysqld --binlog-do-db=test #添加
wampmysqld 服务,并只对数据库
test 进行日志的操作。然后需手动在 控制面板\系统和安全\管理工具\服务 中启动 mysql
第二步:编辑从服务器 MySQL 的 my.ini 文件。
# required unique id between 2 and 2^32 - 1
# (and different from the master)
# defaults to 2 if master-host is set
# but will not function as a slave if omitted
server-id = 2
同样的,上面的编辑也是在 [wampmysqld] 节点下面进行编辑,如下图,然后按照下面的方式安装 MySQL 服务。
shell> mysqladmin -u root -p shutdown #关闭MySQL
shell> mysqld --remove wampmysqld
#移除
wampmysqld 服务
shell> mysqld --install wampmysqld #安装为服务
第三步:专门为从服务器创建一个用户(可选)
打开主服务器MySQL客户端,输入以下命令:mysql>CREATE USER 'repl'@'%' IDENTIFIED BY 'slavepass';
mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
第四步:获取主服务器二进制日志的坐标
1.打开主服务器MySQL客户端,执行下面的SQL语句来防止MySQL的写操作mysql> FLUSH TABLES WITH READ LOCK;
2.获取主服务器的二进制文件名和位置
mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73 | test | manual,mysql |
+------------------+----------+--------------+------------------+
在主服务器,我们能够通过 --binlog-do-db and --binlog-ignore-db 选项来控制哪些数据库被记录入二进制日志。详情见:Binary Log Options and Variables
第五步:使用 mysqldump 创建数据快照
1.打开主服务器 MySQL 客户端
mysql> FLUSH TABLES WITH READ LOCK;
2.打开一个新的 DOS 窗口,用 mysqldump 创建转储,可以是你要复制的所有数据库,也可以是单个数据库
shell> mysqldump --all-databases --lock-all-tables >dbdump.db
还有一种方法是用裸转储,用 --master-data 选项,在从服务器启动复制进程的时候会自动添加 CHANGE MASTER TO 语句。
shell> mysqldump --all-databases --master-data >dbdump.db
3.在第1步的 MySQL 客户端输入以下命令来解锁
mysql> UNLOCK TABLES;
第六步:使用复制原始文件创建数据快照
如果你的数据库很大,复制数据库的原始文件会比用 mysqldump 的效率高。
如果你主从服务器的系统变量 ft_stopword_file, ft_min_word_len 或者 ft_max_word_len 有差异,在复制那些有全文索引的表也会出现问题。
第七步:在已经有数据的从服务器上启动复制
a. 用 --skip-slave-start 选项启动从服务器的MySQL,确保复制还没开始
shell> mysqld --skip-slave-start #
然后需手动在 控制面板\系统和安全\管理工具\服务 中启动 mysql
b. 导入转储文件
shell> mysql < fulldb.dump
6.设定从服务器复制的相关配置
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
;
7.启动从服务器的线程
mysql> START SLAVE;
没有评论:
发表评论