MySQL复制测试
2014-04-27 10:58
405 查看
两台电脑,在一个局域网,使用的都是wampserver2.4。
一、主服务器配置
1.执行SQL语句
SHOW MASTER STATUS\G
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000022
Position: 558764409
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
2.备份my.cnf,然后在my.cnf中做如下更改:
[mysqld]
#add at 2014/04/27
log-bin=binary-log
#add at 2014/04/27
port=3306
3.重启wampserver后,执行
SHOW MASTER STATUS\G
mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
File: binary-log.000001
Position: 239980
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
4.执行下面的语句,也可以获得上述信息:
mysqldump -uroot -p --master-data tmp
输出信息:
D:\program files\wamp\bin\mysql\mysql5.6.12\bin>mysqldump -uroot -p --master-da
a tmp
Enter password:
-- MySQL dump 10.13 Distrib 5.6.12, for Win64 (x86_64)
--
-- Host: localhost Database: tmp
-- ------------------------------------------------------
-- Server version 5.6.12-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0
*/;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Position to start replication or point-in-time recovery from
--
CHANGE MASTER TO MASTER_LOG_FILE='binary-log.000001', MASTER_LOG_POS=2125489;
mysqldump: Got error: 1049: Unknown database 'tmp' when selecting the database
5.执行SQL
CREATE USER root@'192.168.%';
GRANT REPLICATION SLAVE ON *.* TO root@'192.168.%';
二、从服务器配置
1.对从服务器的my.cnf做如下修改:
server-id=2
read-only=TRUE
2.在从服务器执行下列SQL语句
SHOW SLAVE STATUS;
CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='root':
CHANGE MASTER TO
MASTER_LOG_FILE='binary-log.000001',
MASTER_LOG_POS=892901;
3.启动从服务器并验证其操作
SLAVE START;
报错信息,提示该SQL语法错误。
换用SQL语句,
START SLAVE;
执行成功。
再执行SQL语句
SHOW SLAVE STATUS\G
输出信息
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Connecting to master
Master_Host: 192.168.1.100
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binary-log.000001
Read_Master_Log_Pos: 892901
Relay_Log_File: ggh-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: binary-log.000001
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 892901
Relay_Log_Space: 120
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 2003
Last_IO_Error: error connecting to master 'root@192.168.1.100:33
06' - retry-time: 60 retries: 1
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
Master_UUID:
Master_Info_File: c:\wamp\bin\mysql\mysql5.6.12\data\master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the sla
ve I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp: 140427 03:38:16
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)
资料上说,若SLAVE_IO_Running和SLAVE_SQL_Running的值为Yes,就证明“主服务器---从服务器”式的MySQL拓扑已经正常运行。可是,我的从服务器的运行结果的这两个值是Slave_IO_Running: Connecting, Slave_SQL_Running: Yes,这能否说明“主服务器---从服务器”式的MySQL拓扑已经正常运行?
经过我再次测试,Slave_IO_Running: Connecting, Slave_SQL_Running: Yes说明“主服务器--从服务器”式的MySQL拓扑没有正常运行,只有当两个值都是Yes时,才能说明该模式正常运行。
三、测试MySQL复制
1.在主服务器执行SQL
PROMPT alpha>;
输出信息
mysql> PROMPT alpha>;
PROMPT set to 'alpha>'
alpha>
2.在从服务器上执行SQL语句
PORMPT beta>;
输出信息
mysql> PROMPT beta>;
PROMPT set to 'beta>'
在从服务器执行SQL语句
SHOW DATABASES;
输出信息
beta>show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
3.执行SQL语句,确认从服务器上什么都不存在
SHOW SCHEMAS;
输出信息
beta>SHOW SCHEMAS;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
4.在主服务器上创建模式和表并确认创建成功,执行SQL语句
CREATE SCHEMA chapter6;
USE chapter6;
CREATE TABLE replication_test
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
SHOW SCHEMAS;
输出信息
alpha>SHOW SCHEMAS;
+--------------------+
| Database |
+--------------------+
| information_schema |
| chapter6 |
| movies |
| movies(2014042002) |
| movies(20140420) |
| mysql |
| performance_schema |
| studysql |
| t2 |
| test |
| xj |
+--------------------+
11 rows in set (0.00 sec)
奇怪,在执行4的SQL语句之前,SHOW SCHEMAS的执行结果为何不是这样的?
5.在从服务器上检测是否存在在主服务器上创建的chapter6,执行
SHOW SCHEMAS;
从输出信息可知,从服务器上不存在chapter6.
四、总结
1.经过再次测试,发现我的MySQL复制的主从服务器配置已经能够时主从服务器的复制工作正常运行。昨天之所以不成功,是因为,在主服务器上向movies上插入数据的时候,从服务器上并不存在database movies。但是,当我设置从服务器的复制点在创建一个全新的数据库后,复制工作就一切正常。
2.但是,我在主服务器上为从服务器创建一个需要密码认证的帐号时却失败了,报错信息是语法错误。这个问题要解决。
3.从服务器上能否写数据?
经过测试,从服务器可以写数据,可以删除数据,但这些改变对主服务器没有影响。
一、主服务器配置
1.执行SQL语句
SHOW MASTER STATUS\G
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000022
Position: 558764409
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
2.备份my.cnf,然后在my.cnf中做如下更改:
[mysqld]
#add at 2014/04/27
log-bin=binary-log
#add at 2014/04/27
port=3306
3.重启wampserver后,执行
SHOW MASTER STATUS\G
mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
File: binary-log.000001
Position: 239980
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
4.执行下面的语句,也可以获得上述信息:
mysqldump -uroot -p --master-data tmp
输出信息:
D:\program files\wamp\bin\mysql\mysql5.6.12\bin>mysqldump -uroot -p --master-da
a tmp
Enter password:
-- MySQL dump 10.13 Distrib 5.6.12, for Win64 (x86_64)
--
-- Host: localhost Database: tmp
-- ------------------------------------------------------
-- Server version 5.6.12-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0
*/;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Position to start replication or point-in-time recovery from
--
CHANGE MASTER TO MASTER_LOG_FILE='binary-log.000001', MASTER_LOG_POS=2125489;
mysqldump: Got error: 1049: Unknown database 'tmp' when selecting the database
5.执行SQL
CREATE USER root@'192.168.%';
GRANT REPLICATION SLAVE ON *.* TO root@'192.168.%';
二、从服务器配置
1.对从服务器的my.cnf做如下修改:
server-id=2
read-only=TRUE
2.在从服务器执行下列SQL语句
SHOW SLAVE STATUS;
CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='root':
CHANGE MASTER TO
MASTER_LOG_FILE='binary-log.000001',
MASTER_LOG_POS=892901;
3.启动从服务器并验证其操作
SLAVE START;
报错信息,提示该SQL语法错误。
换用SQL语句,
START SLAVE;
执行成功。
再执行SQL语句
SHOW SLAVE STATUS\G
输出信息
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Connecting to master
Master_Host: 192.168.1.100
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binary-log.000001
Read_Master_Log_Pos: 892901
Relay_Log_File: ggh-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: binary-log.000001
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 892901
Relay_Log_Space: 120
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 2003
Last_IO_Error: error connecting to master 'root@192.168.1.100:33
06' - retry-time: 60 retries: 1
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
Master_UUID:
Master_Info_File: c:\wamp\bin\mysql\mysql5.6.12\data\master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the sla
ve I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp: 140427 03:38:16
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)
资料上说,若SLAVE_IO_Running和SLAVE_SQL_Running的值为Yes,就证明“主服务器---从服务器”式的MySQL拓扑已经正常运行。可是,我的从服务器的运行结果的这两个值是Slave_IO_Running: Connecting, Slave_SQL_Running: Yes,这能否说明“主服务器---从服务器”式的MySQL拓扑已经正常运行?
经过我再次测试,Slave_IO_Running: Connecting, Slave_SQL_Running: Yes说明“主服务器--从服务器”式的MySQL拓扑没有正常运行,只有当两个值都是Yes时,才能说明该模式正常运行。
三、测试MySQL复制
1.在主服务器执行SQL
PROMPT alpha>;
输出信息
mysql> PROMPT alpha>;
PROMPT set to 'alpha>'
alpha>
2.在从服务器上执行SQL语句
PORMPT beta>;
输出信息
mysql> PROMPT beta>;
PROMPT set to 'beta>'
在从服务器执行SQL语句
SHOW DATABASES;
输出信息
beta>show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
3.执行SQL语句,确认从服务器上什么都不存在
SHOW SCHEMAS;
输出信息
beta>SHOW SCHEMAS;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
4.在主服务器上创建模式和表并确认创建成功,执行SQL语句
CREATE SCHEMA chapter6;
USE chapter6;
CREATE TABLE replication_test
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
SHOW SCHEMAS;
输出信息
alpha>SHOW SCHEMAS;
+--------------------+
| Database |
+--------------------+
| information_schema |
| chapter6 |
| movies |
| movies(2014042002) |
| movies(20140420) |
| mysql |
| performance_schema |
| studysql |
| t2 |
| test |
| xj |
+--------------------+
11 rows in set (0.00 sec)
奇怪,在执行4的SQL语句之前,SHOW SCHEMAS的执行结果为何不是这样的?
5.在从服务器上检测是否存在在主服务器上创建的chapter6,执行
SHOW SCHEMAS;
从输出信息可知,从服务器上不存在chapter6.
四、总结
1.经过再次测试,发现我的MySQL复制的主从服务器配置已经能够时主从服务器的复制工作正常运行。昨天之所以不成功,是因为,在主服务器上向movies上插入数据的时候,从服务器上并不存在database movies。但是,当我设置从服务器的复制点在创建一个全新的数据库后,复制工作就一切正常。
2.但是,我在主服务器上为从服务器创建一个需要密码认证的帐号时却失败了,报错信息是语法错误。这个问题要解决。
3.从服务器上能否写数据?
经过测试,从服务器可以写数据,可以删除数据,但这些改变对主服务器没有影响。
相关文章推荐
- MySQL数据库设置远程访问权限方法总结
- MySql的错误:Access denied for user 'root'@'localhost' (using password: YES)
- MySQL中的Lock Reading
- .net安装包自动安装Mysql数据库
- Mysql中delimiter作用
- 解决重新安装MySQL无法 start service的问题
- Mysql基本管理
- paip.解决 数据库mysql增加列 字段很慢添加字段很慢
- TRIGGER:Mysql触发器
- win7下自动备份MySQL数据库
- mysql操作
- mysql 引擎
- Wamp如何修改mysql默认空密码
- 源码编译mysql
- [MySQL]索引
- MySQL输入密码后一闪而过的问题
- mysql中文乱码问题
- ubuntu12.04中MySQL图形界面mysql-workbench的安装
- mysql导入数据时提示 USING BTREE 错误解决办法
- Navicat for MySQL 2003 Can't connect to MySQL server on 'localhost'(10061)”