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

MYSQL
mysql "too many connections" 错误 之 mysql解决方法
MySQL: mysql is not running but lock exists 的解决方法
使用mysql中遇到的几个问题
MySQL一个索引最多有多少个列?真实的测试例子
MySQL里Create Index 能否创建主键 Primary Key
MySQL 创建索引(Create Index)的方法和语法结构及例子
MYSQL 优化常用方法
linux mysql 找回密码
mysql 动态执行存储过程语句
MySQL 查找价格最高的图书经销商的几种SQL语句
MySQL 客户端不输入用户名和密码直接连接数据库的2个方法
mysql 查询表中平均分最低的班级
mysql 左连接、右连接和内连接
Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)
Mysql 插入中文及中文查询 (修改+调试)
mysql 数据表中查找重复记录
MySql .frm数据库文件导入的问题
解决hibernate+mysql写入数据库乱码
mySQL UNION运算符的默认规则研究

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 173 ::
收藏到网摘: 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 值不空,在从服务器的错误日志中也会出现错误信息。