当前位置: 首页 > 图文教程 > 数据库 > MYSQL > mysql主从服务器同步心得体会

MYSQL
MySQL 实用命令
Mysql 默认字符集设置方法(免安装版)
MySQL 数据库对服务器端光标的限制
MySQL UPDATE更新语句精解
Table ‘xxx’ is marked as crashed and should be repaired 错误解决方法参考
mysql 读写分离(基础篇)
mysql 读写分离(实战篇)
processlist命令 查看mysql 线程
MySQL 数据类型 大全
MySQL 密码设置
MYSQL代码 定期备份Mysql数据库
汇总整理MYSQL相关操作命令
MySQL 数据库两台主机同步实战(linux)
MSSQL 添加字段说明
MySQL 查询某个字段不重复的所有记录
mysql 设置默认的时间值
mysqlreport显示Com_中change_db占用比例高的问题的解决方法
解决mysql不能插入中文Incorrect string value
mysql从执行.sql文件时处理\n换行的问题
mysql 主从服务器的简单配置

MYSQL 中的 mysql主从服务器同步心得体会


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 169 ::
收藏到网摘: n/a

原来看过MYSQL同步数据的实现,可是自己还没有动过手,今天没什么事就玩一玩,正好在旁边有另一台空电脑,都在同一个路由器下。哈哈,正好。

原来看过MYSQL同步数据的实现,可是自己还没有动过手,今天没什么事就玩一玩,正好在旁边有另一台空电脑,都在同一个路由器下。哈哈,正好。
不过首先在找配置文件上就把我卡了好久,由于我用的是xampp安装包,在xampp/mysql/bin目录下看始终没有找到my.cnf,在c:windows目录下也没有发现,

如上图,看到的只有一个”my”的快速拨号的东西,又不是文件,怎么都打不开。后来找了好久才在网上看到说遇到这种情况需要先打开editplus,然后再从editplus里面打开这个文件,果然。。。
配置就不详说了,网上有很多,我原来也转过一篇。
今天主要是讲一下配置主从服务器需要注意的地方:
首先需要做主从的数据库必须一模一样,如果你的数据库已经运行过一段时间,建议你先删除所有的二进制日志文件,包括索引xxx.index这个文件,否则重启mysql会出错。
从服务器上已经删除掉所有的二进制日志文件,当然包括一个master.info这个文件。这个文件是用来记录主服务器上过来的日志文件和记录位置的。如果你不删除它,它还会按照之前的记录来做,所以会出问题,我在这里浪费了很多时间了。
主服务器诊断:
show processlist;显示所有的进程。
show master status;显示主服务器的日志文件和指针位置。
mysql> show master status;
+——————+———-+—————-+——————+
File Position Binlog_Do_DB Binlog_Ignore_DB
+——————+———-+—————-+——————+
mysql-bin.000001 603 videoCommunity
+——————+———-+—————-+——————+
1 row in set (0.00 sec)
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 603
Binlog_Do_DB: videoCommunity
Binlog_Ignore_DB:
1 row in set (0.00 sec)
如上图,mysql-bin.000001是日志记录文件,603是指针位置。
从服务器(slave)上诊断:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: master1
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 603
Relay_Log_File: master2-relay-bin.000053
Relay_Log_Pos: 740
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: videoCommunity
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: 603
Relay_Log_Space: 740
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: 0
1 row in set (0.00 sec)
确认以上信息和主服务器是否一致。
原来看过MYSQL同步数据的实现,可是自己还没有动过手,今天没什么事就玩一玩,正好在旁边有另一台空电脑,都在同一个路由器下。哈哈,正好。
另外,上面每个参数的意义如下:
SHOW SLAVE STATUS 返回以下信息:
Slave_IO_State
SHOW PROCESSLIST 输出的 State 字段的拷贝。从这里可以看出是否线程正在连接主服务器,是否正在等待来自于主服务器的事件,是否正在重新连接主服务器等信息。所有可能出现的状态管理员手册中的复制实现细节列出。这些信息是非常重要的,比如线程虽然运行但是没有成功的连接主服务器,只有这个字段能告诉用户的连接问题。由于 SQL 线程简单,所以它的状态没有拷贝。如果它运行,就没有问题,如果没有运行,可以在 Last_Error 域中找到错误(下面描述)。
Master_Host
目前主服务器主机。
Master_User
连接主服务器的当前用户。
Master_Port
当前的主服务器端口。
Connect_Retry
选项 –master-connect-retry 的当前值。
Master_Log_File
I/O 线程当前读取的主服务器二进制日志文件的名字。
Read_Master_Log_Pos
I/O 线程从当前的主服务器二进制日志中读取的位置起点。
Relay_Log_File
SQL 线程当前读取并执行的中继日志文件的名字。
Relay_Log_Pos
SQL 线程当前从中继日志中读取执行的位置起点。
Relay_Master_Log_File
主服务器中二进制日志文件的名字,此文件中包含了最近一次 SQL 线程执行的事件。
Slave_IO_Running
I/O 线程是否启动。
Slave_SQL_Running
SQL 线程是否启动。
Replicate_Do_DB, Replicate_Ignore_DB
如果有的话,就是以选项 –replicate-do-db 和 –replicate-ignore-db 指明的数据库列表。
Replicate_Do_Table, Replicate_Ignore_Table, Replicate_Wild_Do_Table, Replicate_Wild_Ignore_Table
如果有的话,是以选项 –replicate-do-table, –replicate-ignore-table, –replicate-wild-do-table, and –replicate-wild-ignore_table 指明的表的列表。
Last_Errno, Last_Error
最近执行的查询返回的错误号和错误信息。错误号是 0 且空的信息表示没有错误。如果 Last_Error 值不空,在从服务器的错误日志中也会出现错误信息。