主服务器配置:
1)登陆MySQL数据库
mysql>mysql -uroot -p123
2)给从服务器设置授权用户
mysql>grant all slave on *.* to user1@192.168.10.2 identified by "123";
mysql>grant replication slave on *.* user1@192.168.10.2 identified by "123";
3)修改主数据库服务器的配置文件my.cnf,开 启binlog,并设置server-id的值
log-bin=mysql-bin
server-id=1
4)在主服务器上设置读锁定有效,确保没有数据库操作,以便获得一个一致性的快照
mysql>flush tables with read lock;
mysql>mysqldump test.user -l -F > /tmp/user.sql(推荐这种)
5)查看主服务器上当前的二进制日志名和偏移量值
mysql>show master status;
6)目前主数据库服务器已经停止了更新操作,生成主数据库的备份,备份的方式有两种:
1.cp全部的数据
2.mysqldump备份数据方法
如果主数据库的服务可以停止,那么直接cp数据文件应该是最快的生成快照的方法
7)主数据库备份完毕后,主数据库可以恢复写操作,剩下的操作只需要在从服务器上去执行
mysql>unlock tables;
8)把主数据库的一致性备份恢复到从数据库上,把以上的压缩包解压后放到相应的目录即可。
 
从服务器配置:
1)修改从数据库的server-id,注意server-id的值必须是唯一的,不能和主数据库的配置相同,如果有多个从服务器,每个从服务器必须有自己唯一的server-id值。
连接主服务器:
(1)在从服务器上的配置文件中:
server-id=2
master-host=192.168.10.1
master-user=user1
master-password=123
master-port=3306
log-bin=mysql-bin
#replicate-do-db=test
#replicate-do-table=test.t1
(2)重新启动MySQLd服务:
pkill mysqld
/usr/local/mysql/bin/mysqld_safe --user=mysql &
(3)查看相应的主从复制进程列表有两种:
1.processlist
mysql>show processlist \G;
如果出现:
state:waiting for master to send event
//连接主数据库为成功,而且成功获取bin-log
state:has read all ready log;waiting for the slave i/o thread to update it
//成功执行bin-log日志,正在等待着去再次连接主数据库并更新获取bin-log日志
 
2.status
mysql>show slave status\G;
如出现:
slave_IO_running:YES
//此进程负责从服务器从主服务器上读取binlog日志,并写入从服务器上的中继日志中。
slave_SQL_running:YES
//此进程负责读取并且执行中继日志中的binlog日志,
#注以上两个都为YES则表明成功,只要其中一个进程的状态是no,则表示复制进程停止,错误原因可以从“last_error”字段的值中看到。
 
(4)从数据库常用命令:
1.start slave
#启动复制进程
2.stop slave
#停止复制进程
3.show slave status
#查看从数据库状态
4.show master logs
#查看主数据库bin-log日志
5.change master to
#动态改变主服务器的配置
6.show processlist
#查看从数据库运行进程
 
MySQL常见错误
从数据库无法同步:
show slave status显示slave_SQL_running为
No,Seconds_Behind_Master为null
原因:
a.程序可能在slave上进行了写操作
b.也可能是slave机器重启后,事务回滚造成的
解决:方法一
mysql>slave stop;
mysql>set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql>slave start;
 
解决:方法二
slave库,mysql>slave stop;--停掉slave服务
master库,mysql>show master status;
得到主服务器上当前的二进制日志名和偏移量
 
查看状态,然后到slave服务器上执行手动同步
mysql>change master to
master_host="192.168.10.1",
master_user="user1",
master_password='123',
master_port=3306,
master_log_file="mysql-bin.0000003",
master_log_pos=98;
启动slave服务,
mysql>slave start;
通过show slave status查看slave_SQL_running为
YES,Seconds_Behind_Master为0即为正常
 
 

最新文章

  1. BZOJ1026: [SCOI2009]windy数[数位DP]
  2. composer安装fxp插件时候提示内存不足且没有交换空间的解决办法
  3. Redis配置文件主要功能说明
  4. jquery中奖实例代码
  5. How Tomcat Works(八)
  6. ios进行打包
  7. Linux挂载U盘
  8. linux 让一个程序开机自启动并把一个程序加为服务
  9. 匿名HTTP透明HTTP高匿HTTP区别
  10. 6-4 The present perfect
  11. 判断一个js对象是否是Array
  12. UVA11468 Substring
  13. vue进行文件下载
  14. JS全局对象的属性
  15. Unity3D学习笔记(三十六):Shader着色器(3)- 光照
  16. CSS中文乱码解决方法
  17. JDBC改进版
  18. 【英宝通Unity4.0公开课学习 】(二)场景创建
  19. uva 12508 - Triangles in the Grid(几何+计数)
  20. [POJ3090]Visible Lattice Points(欧拉函数)

热门文章

  1. JAVA学习方法之——费曼学习法
  2. 【cf995】F. Cowmpany Cowmpensation(拉格朗日插值)
  3. pdfium ppm demo
  4. SpringCloud学习笔记(六、SpringCloud Netflix Feign)
  5. 再次体会wireshark的威力!
  6. c# WF 第3节 窗体的属性
  7. python copy和deepcopy
  8. SpringBoot(十八)_springboot打成war包部署
  9. Object的多种方法
  10. 【java】svn显示×