1. MySQL 主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以
跟踪日志循环。当一个从服务器连接到主服务器时,它通知主服务器从服务器
在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何
更新,然后封锁并等待主服务器通知下一次更新。
2. MySQL 使用 3 个线程来执行复制功能(其中 1 个在主服务器上,另两个在从服
务器上。当发出 START SLAVE 时,从服务器创建一个 I/O 线程,以连接主服
务器并让主服务器发送二进制日志。主服务器创建一个线程将二进制日志中的
内容发送到从服务器。从服务器 I/O 线程读取主服务器 Binlog Dump 线程发送
的内容并将该数据拷贝到从服务器数据目录中的本地文件中,即
中继日志
。第
3 个线程是 SQL 线程,从服务器使用此线程读取中继日志并执行日志中包含的
更新。SHOW PROCESSLIST 语句可以查询在主服务器上和从服务器上发生
的关于复制的信息。
3. 默认中继日志使用 host_name-relay-bin.nnnnnn 形式的文件名,其中 host_na
me 是从服务器主机名,nnnnnn 是序列号。用连续序列号来创建连续中继日志
文件,从 000001 开始。从服务器跟踪中继日志索引文件来识别目前正使用的
中继日志。 默认中继日志索引文件名为 host_name-relay-bin.index。在默认
情况,这些文件在从服务器的数据目录中被创建。中继日志与二进制日志的格
式相同,并且可以用 mysqlbinlog 读取。当 SQL 线程执行完中继日志中的所
有事件后,中继日志将会被自动删除。
4. 从服务器在数据目录中另外创建两个状态文件--master.info 和 relay-log.info。
状态文件保存在硬盘上,从服务器关闭时不会丢失。下次从服务器启动时,读
取这些文件以确定它已经从主服务器读取了多少二进制日志,以及处理自己的
中继日志的程度。
设置:
1、在主服务器上为复制设置一个连接账户。该账户必须授予 REPLICATION SLA
VE 权限。
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'replication'@'%.yourdomain.com' IDENTIFIED BY ' replication ';
mysql> FLUSH TABLES WITH READ LOCK;
shell> cd /usr/local/mysql/
shell> tar -cvf /tmp/mysql-snapshot.tar ./data
当FLUSH TABLES WITH READ LOCK所置读锁定有效时(即mysql客户端程序不
退出),读取主服务器上当前的二进制日志名和偏移量值:
mysql > SHOW MASTER STATUS;
+-------------------+----------+-------------------+------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+-------------------+-------------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
评论0