mysql主从复制

来源:互联网 发布:腾讯视频网络错误1 编辑:程序博客网 时间:2024/06/06 05:00

主从复制的说明

mysql的主从复制,是生产环境的基本架构。MySQL支持单向、异步复制。单向指一个复制过程,复制从主服务器复制到从服务器,但是一个复制过程的从服务器,在另一个复制过程中是可以担任主服务器的,即mysql支持链式复制,或者叫菊花式复制;异步复制,不需要特殊说明,不过注意,如果主服务异常关闭,可能会早晨部分数据还么有同步到从服务器的情况。

复制的原理

mysql的主从复制,是通过传送二进制日志进行数据同步的。即,主服务器启动二进制日志,该日志会记录所有在主服务器上的操作,并把二进制日志传送给连接进来的从服务器,从服务器得到二进制日志后,在本地数据库中进行执行。看到上面的原理,想必大家注意到,一定要先进行主从服务器的数据库文件同步,在搭建复制架构才有意义。当然如果主从服务器数据不一致,进行实施的时候就会报错的。

复制中的线程

在一个最简复制架构中,MySQL使用3个线程来执行复制功能。可以使用如下命令查看数据库中的线程:

SHOW PROCESSLIST\G

*注意最后的\G,可以已更易读的方式输出。

3个线程中,一个运行在主服务器中,通常成为“复制主线程”,其他两个运行在从服务器中,分别成为“复制从I/O线程”、“复制从SQL线程”。

复制主线程,主服务器会为每一个连接进来的从服务器建立一个“复制主线程“,使用该线程将二进制日志中的内容发送到从服务器。

复制从I/O线程,是从服务器请求主服务器,并接受主服务器发送二进制日志的进程。

复制从SQL线程,是从服务器执行接受到的二进制日志的后台进程。

复制的实施

本教程实施最简单的一主一从的复制架构。操作系统:win7,mysql:5.1

我本地是安装的mysql,为了不影响原来安装的mysql的使用,我这里完全启动了两个新的mysql实例。

数据库安装目录D:\Program Files\MySQL\MySQL Server 5.1;数据库数据目录:D:\ProgramData\MySQL\MySQL Server 5.1\data

第一步,建立新的数据目录,D:\ProgramData\MySQL\MySQL Server 5.1\master和slave

第二步,在mysql安装目录,建立两个新的配置文件(这里已经非常的简化,不可作为生产环境使用)。my-master.ini和my-slave.ini

第三步,编辑两个文件如下

[mysqld]port=3307default-storage-engine=MyISAMdatadir="D:/ProgramData/MySQL/MySQL Server 5.1/master"#启动二进制,配置服务器idlog-bin=mysql-binserver-id=1

my-master.ini

[mysqld]port=3308default-storage-engine=MyISAMdatadir="D:/ProgramData/MySQL/MySQL Server 5.1/slave"#设置二进制日志,设置从服务器idlog-bin=mysql-binserver-id=2

my-slave.ini

第四部,启动两个服务器

bin\mysqld.exe --defaults-file=my-master.ini --console
bin\mysqld.exe --defaults-file=my-slave.ini --console

第五步,登录主服务器,mysql -h localhost --port 3307 -u root -p,输入密码。

1.创建复制用户

GRANT REPLICATION SLAVE ON *.*TO 'mysync'@'%' IDENTIFIED BY '123456';

2.写出缓存,锁定数据库

FLUSH TABLES WITH READ LOCK

3.复制主服务器数据目录中的数据库文件(如果主从服务器已经一致就不用此步骤,例如我这里就不用复制)

4.执行下面语句,记录下日志文件和pos数值

show master status;

5.解锁

unlock tables;

第六步,登录从服务器。如果复制了主服务器的数据,则应重启。

1.执行下面的语句,设置主服务器信息。

change master to master_host='192.168.1.13',master_port=3307,master_user='mysync',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=106;

2.执行start slave启动从服务器。

3.执行下列语句看看从服务器状态。

 show slave status\G

如下图所示就说明已经正常启动了主从复制。

最后,我们可以登录主服务器,创建数据库表,插入数据等进行测试了。这里不在描述。

 

0 0
原创粉丝点击