将linux mysql同步到windows mysql_Windows mysql双向同步备份(适用linux)

例如:

A:192.168.1.200

B:192.168.1.210

1)MySQL的A、B配置:

配置文件my.ini中

[mysqld]

# The TCP/IP Portthe MySQL Server will listen on

port=3306

找到以上配置,之后添加以下配置

server-id=200#服务器唯一标识,A与B中的id不能相同

log-bin=mysql-bin#同步事件的日志记录文件,可以指定路径如:”c:/mysql/binlog.txt”

binlog-do-db=test1#提供数据同步服务的数据库

binlog-do-db=test2#提供数据同步服务的数据库

replicate-do-db=test1#同步的数据库

replicate-do-db=test2#同步的数据库

replicate-ignore-db=mysql(不同步mysql库,不需要是这一项可以不添加)

2)*配置好后,重启A,B的MySQL服务!!!

可以在dos中输入命令net stop mysql和net start mysql

也可以在任务管理器中重启mysql

linux下ssh中输入service mysqld stop

3)登录A,B的mysql,然后分别执行下面命令:(A,B互相给予访问权限)

(远程访问用户名)mysql登陆账户要建立同步的对方IP本地mysql登陆密码,也就是双方要有对方的账户呗

mysql>grant allprivileges on *.* to root@'192.168.1.210' identifiedby 'root'

mysql> Flushprivileges;

grantall privileges on *.* to root@"%" identified by "root";

一般使用以上命令,“%”给所有用户给予权限;因为单独给权限时,tomcat集群会出现部分数据查询不到。

允许A服务器用户root从ip为192.168.1.210的主机连接到B服务器,并使用B服务器的mysql登陆密码’root’.

*.*表示所有数据库,如果要对某个数据库备份的话,假如数据库名称为some,

则要换成some.*

4)在A,B的mysql中输入命令:

先停止从服务器同步服务

mysql> stopslave;

改变当前主服务器(即远程访问用户)的IP,mysql用户名,mysql密码,mysql端口号;网上将这些主服务器的信息添加至my.ini配置中,经过多台pc机测试,无法重新启动mysql,故采用mysql命令输入方式,可行,但前做的是主主,故master_host=要互相知道,也就是填对方的地址。

mysql>changemaster to master_host='192.168.1.210',master_user='root',master_password=‘root'

,master_port=3306;

启动从服务器同步服务

mysql> startslave;

检查是否配置成功

mysql>showslave status\G

找到Slave_IO_Running: YESSlave_SQL_Running: YES;此两项为yes则同步成功

5)如果Slave_IO_Running:NO时

1、先查看A,B服务器IP能否ping通

2、A、B服务器用户名、密码是否正确

3、A、B服务器的防火墙是否关闭

4、A、B服务器是否相互授权

以上状态有一项不符,修改完后从第2步开始继续操作。

mysql> stopslave;

mysql> startslave;

然后输入show slave status\G命令,如果还是Slave_SQL_Running:NO

查看error信息是否有变化,有变化则继续输入上面命令,直到Slave_SQL_Running:YES。

原因:

a.程序可能在slave上进行了写操作

b.也可能是slave机器重起后,事务回滚造成的.

解决办法2:

a.首先停掉Slave服务:slave stop

b.到主服务器上查看主机状态:

记录File和Position对应的值。

mysql> show master status;

+------------------+-----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+-----------+--------------+------------------+

| mysql-bin.000020 | 135617781 | | |

+------------------+-----------+--------------+------------------+

1 row in set (0.00 sec)

3.到slave服务器上执行手动同步:

mysql> change master to

> master_host='master_ip',

> master_user='user',

> master_password='pwd',

> master_port=3307,

> master_log_file='mysql-bin.000020',

> master_log_pos=135617781;

1 row in set (0.00 sec)

mysql> slave start;

1 row in set (0.00 sec)

再次查看slave状态发现:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

...

Seconds_Behind_Master: 0

解决办法II:

mysql> slave stop;

mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

mysql> slave start;

自己的使用体会:方法一是强制性从某一个点开始同步,会有部分没有同步的数据丢失,后续主服务器上删除记录同步也会有一些错误信息,不会影响使用.方法二不一定会有效果.

keelalived实现mysql单点故障

1)安装:

#tar -zxvf keepalived-1.2.7.tar.gz

#cd keepalived-1.2.7

#./configure --prefix=/usr/local/keepalived

预编译后出现:

Keepalived configuration

------------------------

Keepalived version       : 1.2.7

Compiler                 : gcc

Compiler flags           : -g -O2 -DETHERTYPE_IPV6=0x86dd

Extra Lib                : -lpopt -lssl -lcrypto

Use IPVS Framework       : Yes

IPVS sync daemon support : Yes

IPVS use libnl           : No

Use VRRP Framework       : Yes

Use VRRP VMAC            : No

SNMP support             : No

Use Debug flags          : No

注意如果你没有用到LVS可以把lvs去掉即--disable-lvs-syncd --disable-lvs

#make && make install

整理管理文件:

#cp /usr/local/keepalived/sbin/keepalived /usr/sbin/#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

建立配置文件目录(注意:keepalived的配置文件默认在/etc/keepalived/目录)

#mkdir/etc/keepalived

两台服务器(两个节点)都这样安装即可

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

admin@ajcheng.com

}

notification_email_from admin@ajcheng.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id MySQL-ha

}

vrrp_instance VI_1 {

state BACKUP   #两台配置此处均是BACKUPinterface eth0 #网卡什么都不用配置,这边会自动生成虚拟IP

virtual_router_id 61

priority 100   #优先级,另一台改为90

advert_int 1

nopreempt  #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置

authentication {

auth_type PASS

auth_pass 111

}

virtual_ipaddress {

192.168.1.86

}

}

virtual_server 192.168.1.86 3306 {

delay_loop 2   #每个2秒检查一次real_server状态

lb_algo wrr   #LVS算法

lb_kind DR    #LVS模式

persistence_timeout 60   #会话保持时间

protocol TCP

real_server 192.168.1.83 3306 {

weight 3

notify_down /root/mysql.sh  #检测到服务down后执行的脚本

TCP_CHECK {

connect_timeout 10    #连接超时时间

nb_get_retry 3       #重连次数

delay_before_retry 3   #重连间隔时间

connect_port 3306   #健康检查端口

}

}

}

vim /usr/local/mysql/bin/mysql.sh

#!/bin/sh

pkill keepalived

service network restart

chmod -R 777 /usr/local/mysql/bin/mysql.sh

chkconfig keepalived on

service keepalived start

service keepalived stauts

ip add

如果在其中一台机子上看到了VIP 192.168.1.86,且在局域网内能ping通,通过Navicat能过连上,说明ok了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值