博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql主从复制
阅读量:6273 次
发布时间:2019-06-22

本文共 4399 字,大约阅读时间需要 14 分钟。

 把数据库文件及存储位置移到drbd块中,my.cnf最好也放在drbd中 当切换到备机的时候就不需要再次配置mysql

在heartbeat资源脚本目录建立mysql启动脚本的软连接:[root@node1 ~]# ln -s /etc/init.d/mysqld /usr/local/ha/etc/ha.d/resource.d/mysqld

 

 

 

 

 

http://www.blogjava.net/dongbule/archive/2010/08/22/329602.html

http://369369.blog.51cto.com/319630/790921/

http://my.tv.sohu.com/us/181018113/59392643.shtml

测试环境: centos6.5   108主服务   114 从服务器   备份库名:zzx

1、主服务器配置my.cnf

[root@localhost ~]# vi /etc/my.cnf   [mysqld]添加如下 

[mysqld]

log-bin = mysql-bin                       # 开启BINLOG   ,实际目录应该是上面语句的datadir=/var/lib/mysql

server-id=1                                  #随便都可以

修改后restart mysql 不能重启就是配置文件写错了

 

2、主服务器给从服务器访问授权  

mysql> GRANT REPLICATION SLAVE ON *.* TO IDENTIFIED BY '123456';//这里用114表示从114可访问  这样slave才能访问到master进行同步

Query OK, 0 rows affected (0.13 sec)

mysql> select host,user,Password from mysql.user;  #可以查看到刚添加的slavezzx用户   从服务器用这个用户访问主服务器

 

 

3、获取主服务器当前二进制日志名和偏移量,这个操作的目的是为了在从数据库启动后,从这个点开始进行数据的恢复

 

mysql> show master status\G   #这里不需要加 ;  不然会提示错误ERROR: No query specified

*************************** 1. row ***************************            

File: mysql-bin.000002        

Position: 106    

Binlog_Do_DB:

Binlog_Ignore_DB:

1 row in set (0.00 sec)

ERROR: No query specified

 

 

4、mysqldump备份数据库然后传给从服务器 

mysql> flush tables with read lock;   #锁定数据库的写入  确保数据完整

Query OK, 0 rows affected (0.19 sec)

 

之后是mysqldump

 

mysqldump -h127.0.0.1 -p3306 -uroot -p zzx > /root/zzx.sql

 

最好在主数据库备份完毕,恢复写操作

 

mysql> unlock tables;

Query OK, 0 rows affected (0.28 sec)

 

(6)将刚才主数据备份的test.sql复制到从数据库,进行导入   mysql -uroot -p test <  /root/zzx.sql

 

 

(7)接着修改从数据库的my.cnf,增加server-id参数,指定复制使用的用户,主数据库服务器的ip,端口以及开始执行复制日志的文件和位置

 

[mysqld]

server-id=2

log-bin = mysql-bin       

master-host =192.168.1.108

master-user=slavezzx

master-pass=123456

master-port =3306

master-connect-retry=60

replicate-do-db =zzx   #备份zzx这个database

 

mysql> show variables like 'server_id';     #这条语句检查value值  正确的话主服务器显示设置的1  从显示设置的2  

 

8、重启从服务器mysql 接着测试从服务器和主服务器的连通性     注意selinux和iptables

[root@localhost ~]# mysql -u slavezzx -h 192.168.1.108 -p    #确保能连接  ,exit

 

9、在从服务器进行show salve status验证

mysql> SHOW SLAVE STATUS\G   #这一步内容为空  不正常  说明主从没连接上 检查之前的连通性 selinux和iptables

如果前面验证失败 进行修改  change

mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.108', MASTER_USER='slavezzx', MASTER_PASSWORD='123456' ,master_log_file='mysql-bin.000002',master_log_pos=106;   #log_file文件多写了一个.  导致弄了几个小时到处检查,这里的MASTER_HOST其实也是heartbeat的VIP地址,log_pos表示日志的Position一般用98这个起始值

 

ERROR 1198 (HY000): This operation cannot be performed with a running slave; run STOP SLAVE first     # change的时候需要先stop slave

mysql> slave stop;

Query OK, 0 rows affected (0.00 sec)

change完 slave start; //启动同步功能

mysql> SHOW SLAVE STATUS\G

*************************** 1. row ***************************               Slave_IO_State:                   Master_Host: 192.168.1.108                  Master_User: slavezzx                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File:           Read_Master_Log_Pos: 4               Relay_Log_File: mysqld-relay-bin.000001                Relay_Log_Pos: 4        Relay_Master_Log_File:              Slave_IO_Running: No    # change时语法写错  file文件名字写错一个.               Slave_SQL_Running: No    #iptables没关导致无法连接              Replicate_Do_DB: zzx          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: 0              Relay_Log_Space: 106              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: NULLMaster_SSL_Verify_Server_Cert: No                Last_IO_Errno: 1593                Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).               Last_SQL_Errno: 0               Last_SQL_Error: 1 row in set (0.00 sec)

 结果  以上两个必须为YES

 

 

 

(10)好了,现在可以在我们的主服务器做一些更新的操作,然后在从服务器查看是否已经更新

 

数据能否同步  主要检查  主服务器的 show master status\G  和从服务器的  show  slave status\G    中的两个数据是否相同

 

转载于:https://www.cnblogs.com/hanxing/p/4400995.html

你可能感兴趣的文章
Laravel的三种安装方法总结
查看>>
SpringMVC加载配置Properties文件的几种方式
查看>>
C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginat...
查看>>
java 项目相关 学习笔记
查看>>
numpy opencv matlab eigen SVD结果对比
查看>>
WPF获取某控件的位置,也就是偏移量
查看>>
Boost C++ 库 中文教程(全)
查看>>
solr查询优化(实践了一下效果比较明显)
查看>>
jdk目录详解及其使用方法
查看>>
说说自己对RESTful API的理解s
查看>>
通过layout实现可拖拽自动排序的UICollectionView
查看>>
服务器错误码
查看>>
javascript中的面向对象
查看>>
Splunk作为日志分析平台与Ossec进行联动
查看>>
yaffs文件系统
查看>>
Mysql存储过程
查看>>
NC营改增
查看>>
Lua
查看>>
Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
查看>>
postgresql 获取刚刚插入的数据主键id
查看>>