先上Master库:
mysql>show
processlist;
查看下进程是否Sleep太多。发现很正常。
show
master
status;
也正常。
mysql>
show
master
status;
+-------------------+----------+--------------+-------------------------------+
|
File
|
Position
|
Binlog_Do_DB
|
Binlog_Ignore_DB
|
+-------------------+----------+--------------+-------------------------------+
|
mysqld-bin000001
|
3260
|
|
mysql,test,information_schema
|
+-------------------+----------+--------------+-------------------------------+
1
row
in
set
(000
sec)
再到Slave上查看
mysql>
show
slave
status\G
Slave_IO_Running:
Yes
Slave_SQL_Running:
No
可见是Slave不同步
下面介绍两种解决方法:
方法一:忽略错误后,继续同步
该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况
解决:
stop
slave;
#表示跳过一步错误,后面的数字可变
set
global
sql_slave_skip_counter
=1;
start
slave;
之后再用mysql>
show
slave
status\G
查看:
Slave_IO_Running:
Yes
Slave_SQL_Running:
Yes
ok,现在主从同步状态正常了。。。
方式二:重新做主从,完全同步
该方法适用于主从库数据相差较大,或者要求数据完全统一的情况
解决步骤如下:
1先进入主库,进行锁表,防止数据写入
使用命令:
mysql>
flush
tables
with
read
lock;
注意:该处是锁定为只读状态,语句不区分大小写
2进行数据备份
#把数据备份到mysqlbaksql文件
[root@server01
mysql]#mysqldump
-uroot
-p
-hlocalhost
>
mysqlbaksql
这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失
3查看master
状态
mysql>
show
master
status;
+-------------------+----------+--------------+-------------------------------+
|
File
|
Position
|
Binlog_Do_DB
|
Binlog_Ignore_DB
|
+-------------------+----------+--------------+-------------------------------+
|
mysqld-bin000001
|
3260
|
|
mysql,test,information_schema
|
+-------------------+----------+--------------+-------------------------------+
1
row
in
set
(000
sec)
4把mysql备份文件传到从库机器,进行数据恢复
#使用scp命令
[root@server01
mysql]#
scp
mysqlbaksql
root@192168128101:/tmp/
5停止从库的状态
mysql>
stop
slave;
6然后到从库执行mysql命令,导入数据备份
mysql>
source
/tmp/mysqlbaksql
7设置从库同步,注意该处的同步点,就是主库show
master
status信息里的|
File|
Position两项
change
master
to
master_host
=
'192168128100',
master_user
=
'rsync',
master_port=3306,
master_password='',
master_log_file
=
'mysqld-bin000001',
master_log_pos=3260;
8重新开启从同步
mysql>
stop
slave;
9查看同步状态
mysql>
show
slave
status\G
查看:
Slave_IO_Running:
Yes
Slave_SQL_Running:
Yes
好了,同步完成啦。
主库的主机关机时,数据只能读不能写,并且从库的主机关机后,数据仍然可读可写,这个不好弄,如果你对lua脚本有所了解,修改mysql-proxy 的读写分离脚本或许可以实现。
不过主库关机时不能访问,并且从库关机仍可读可写,这个不需要配读写分离,这本来就是主从复制的基本能力,从库只是备用的而已。从库关闭后再开启,slave IO线程会自动从中断处二进制日志的位置开始复制主机的二进制日志,slave SQL线程会读取并执行这些二进制日志中的SQL。
总之,不需要特别的配置,这是主从复制的基本能力。
--主机开两个窗口,一个进入mysql,一个是shell
--主机阻断写 *** 作
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (000 sec)
mysql>
mysql>
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin000002 | 1529881 | openser | mysql,test |
+------------------+----------+--------------+------------------+
1 row in set (000 sec)
--另外一个窗口导出主机数据库
mysqldump -u root -p123456 --opt -R openser > openser20121203sql
--刚才的窗口主机解锁
mysql> UNLOCK TABLES;
Query OK, 0 rows affected (000 sec)
mysql>
--打包数据文件到从机
drop database openser;
create database openser;
mysql -u root -p123456 openser < openser20121127sql
--从机 *** 作
SLAVE STOP;
reset slave;
CHANGE MASTER TO MASTER_HOST='1921682126',
MASTER_USER='repl_user',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin000002',
MASTER_LOG_POS=1529881;
start slave;
show slave status\G
Mysql55和Mysql56主从同步设置
主服务器(MySQL55)
从服务器(MySQL56)
1、在主库创建从库用户
insert into mysqluser(Host,User,Password) values('localhost','slaveuser',password('123456'));
flush privileges;
grant replication slave on to 'slaveuser' ' identified by '123456' with grant option;
2、修改主库配置文件mycnf
#编辑配置文件,在[mysqld]部分添加下面内容
vi /etc/mycnf
#设置服务器id
server-id=80
#启动MySQ二进制日志系统
log_bin=mysql-bin
#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-do-db=api
#不同步mysql系统数据库
binlog-ignore-db=mysql
#重启MySQL
service mysqld restart
#进入mysql控制台
mysql -u root -p
#查看主库同步状态
show master status\G;
3、修改从库配置文件mycnf(保证主从server-id不一样,一般用ip最后的字段)
vi /etc/mycnf
#设置服务器id
server-id=90
3、从库增加配置
#进入mysql控制台
mysql -u root -p
#停止slave同步进程
stop slave;
#执行同步语句
change master to master_host=' ',master_user='slaveuser',master_password='123456',master_log_file='mysql-bin000001' ,master_log_pos=
#开启slave同步进程
start slave;
#查看从库同步状态
show slave status\G;
以上就是关于mysql主从数据库不同步的2种解决方法全部的内容,包括:mysql主从数据库不同步的2种解决方法、MySQL主从数据库备份,从数据库中断后能否同步到和主数据库一致、mysql主从同步 如何同步已有的数据,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)