所谓的数据库主从复制功能就是说把数据库的操做分别分配给主服务器和从服务器,查询一类的操做就发送到从服务器,而更新、修改一类的操做就发送到主服务器。如此一来,就能减轻主服务器的负担。它的优势有许多,能够加强服务器健壮性,要是主服务器出问题了,能够切换从服务器作备份,工做分化!mysql
它的实现过程就是服务器将用户对数据库的更新、修改的操做以二进制格式保存到bina log日志文件里,而后由binlog dump
sql
线程将binary log日志文件传输到从服务器,从服务器经过一个i/o线程将主服务器的binary log日志文件中的操做复制到一个叫relay log的中继日志文件中,从服务器的另一个sql线程将relay log中继日志文件中的操做依次在本地执行,从而实现主从之间数据的同步。shell
个人配置环境,主服务器:
数据库
os:ubantu; mysql:version5.543; 服务器
从服务器:
测试
os:window8; mysql:version:5.58;
spa
主服务器的mysql版本最好就不要高于从服务器mysql版本线程
下面说说操做:rest
主服务器:日志
登录mysql:
mysql -uroot -p********
登录后;你键入
SHOW MASTER STATUS;
你会发现没什么变化的,而后下面开始在主服务器上为从服务器设置一个链接帐户,让它能够进行主从复制功能;
GRANT REPLICATION SLAVE ON *.* TO 'swon'@'%' IDENTITIED BY 'password';
解释下上一条命令,grant就是容许,REPLICATION SLAVE就是从库复制,swon就是你在从库登录时的帐号,password就是登录密码,总结起来讲就是容许经过在从服务器登录swon \password进行复制之类的意思,知道就行,没必要深究啦。
而后开始配置,打开 /etc/mysql/my.cnf ,加入
[mysqld] log-bin=mysql-bin server-id=1
保存后,退出,而后从新登录mysql
sudo /etc/init.d/mysql restart
restart成功后,继续
SHOW MATER STATUS;
你会看到
这就配好主服务器的了,这个file表示主服务器正在使用的binlog文件,position的值和binlog文件大小同样。
从服务器:
打开你的从服务器的mysql配置文件,因为每一个人的安装路径不同,只要打开my.ini这个文件就行,在里面加入
[mysqld] log_bin=mysql-bin server_id=2
这个server_id不能与主服务器的server_id同样!而后start 从服务器mysql,注意个人从服务器是在window环境,是要在bin目录下使用mysql命令
mysql -uroot -p*****
这个登录帐号密码要按本身的实际来呀;
而后开始链接主服务器的信息;
CHANGE MASTER TO MASTER_HOST='192.168.1.123',MASTER_USER='swon',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000012',MASTER_LOG_POS=0;
解释下上面这条命令,CHANGE MASTER TO 这个语句是表示指定主服务器的信息,MASTER_HOST指定主服务器的ip 端口,MASTER_USER就是咱们刚开始时,在主服务器配置的用户名,MASTER_PASSWORD也是咱们在主服务器配置的密码,MASTER_LOG_FILE就是主服务器正在使用的binlog文件,而MASTER_LOG_POS通常默认为零,表示从开始位置开始读。
配置好以后,咱们就开启从库,键入
START SLAVE;
而后查看从库状态,键入
SHOW SLAVE STATUS\G
能够看到
要注意的是,Slave_IO_Running,和Slave_SQL_Runnig都必须为YES,还有,Second_Behind_Master必须为0,表示已经开始工做。
配置到此告一段落,咱们能够在查看下,
在主服务器中键入;
SHOW PROCESSLIST\G
能够看到
第二条就是处理i/o线程的链接。
而后在从服务器上键入:
SHOW PROCESSLIST\G
能够看到
第二行是i/o线程状态,第三行就是sql线程状态。
到此,咱们能够测试下,这个主从复制能不能派上用场了,
在主服务器上创库、创表,插入数据;
完了后,咱们在从服务器上看有没有实现同步
能够看到,从服务器也同步创了swon库,而后再看:
至此,已经实现了功能。