Linux 下mysql的双主热备

Linux 下mysql的双主热备

                            作者:浩浩哥来了

1、数据库同步设置

 

主机操作系统:RedHatEnterprise Linux 6

数据库版本

前提:MYSQL数据库正常启动

假设两台主机地址分别为:

 

ServA:192.168.18.112

ServB:192.168.18.114

 

注意:操作前,全文查找替换,将server A、B替换成实际IP

 

2、配置同步账号

 

在ServA上增加一个ServB可以登录的帐号:

mysql -uroot -p123456

grant all privileges on *.* [email protected] identified by ‘123456‘ with grant option;

在ServB上远程登录查看192.168.18.114使用lwh这个账号密码为123456登录上去拥有全部权限

mysql -h 192.168.18.112 -ulwh -p123456

 

在ServB上增加一个ServA可以登录的帐号:

mysql -uroot -p123456

grant all privileges on *.* [email protected] identified by ‘123456‘ with grant option;

在ServA上远程登录查看192.168.18.112使用lwh这个账号密码为123456登录上去拥有全部权限

 

 

3、以root用户登录ServA,修改ServA的my.cnf文件

vi /etc/my.cnf

 

在[mysqld]的配置项中增加如下配置:

 

default-character-set=utf8

log-bin=mysql-bin

relay-log=relay-bin

relay-log-index=relay-bin-index

server-id=1     表示主机号

master-host=192.168.18.114  另一台主机IP

master-user=lwh     同步的用户为lwh

master-password=123456  同步用户密码为123456

master-port=3306  主机mysql的端口是3306

master-connect-retry=30  主机重试时间为30秒

set-variable=replicate-do-db=haohaoge 同步的数据库名称为haohaoge

set-variable=replicate-do-db=aoffice 有同步多个数据库就重复写多个名称

slave-net-timeout=60  辅助连接超时为60秒

 

 

 

4、以root用户登录ServB,修改ServB的my.cnf文件

vi /etc/my.cnf

 

在[mysqld]的配置项中增加如下配置:

 

default-character-set=utf8

log-bin=mysql-bin

relay-log=relay-bin

relay-log-index=relay-bin-index

server-id=2     表示主机号

master-host=192.168.18.112  另一台主机IP

master-user=lwh     同步的用户为lwh

master-password=123456  同步用户密码为123456

master-port=3306  主机mysql的端口是3306

master-connect-retry=30  主机重试时间为30秒

set-variable=replicate-do-db=haohaoge 同步的数据库名称为haohaoge

set-variable=replicate-do-db=aoffice 有同步多个数据库就重复写多个名称

slave-net-timeout=60  辅助连接超时为60秒

 

 

 

5、重启 ServA ServB的mysql服务

 

service mysqld restart

 

用sysorg登录后台,在servA添加一个用户,B上查看是否同步。

 

至此完成

 

 

 

备注:

 

查看同步状态

Mysql>show slave status\G

 

查看这两项是否为YES,yes为正常。

Slave_IO_Running:Yes

Slave_SQL_Running:Yes

 

 

 

手工执行数据库同步

 

假设以ServA为主服务器,在ServB上重启mysql:

service mysqld restart

在ServB上用root用户登录mysql,执行:

Mysql> stop slave;

Mysql> load data from master;

Mysql> start slave;

在ServA上重启mysql:

service mysqld restart

 

scp /home/administrator/[email protected]:/etc/squid

scp [email protected]:/usr/local/sin.sh/home/administrator

 

 

 

mysql> CHANGE MASTER TO

-> MASTER_HOST=’master_host_name’,

-> MASTER_USER=’replication_user_name’,

-> MASTER_PASSWORD=’replication_password’,

-> MASTER_LOG_FILE=’recorded_log_file_name’,

-> MASTER_LOG_POS=recorded_log_position;

 

 

 

 

同步过程中出现下列问题

mysql> show slave status\G;

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

               Slave_IO_State:

                  Master_Host: 192.168.18.112

                  Master_User: tongbu

                  Master_Port: 3306

                Connect_Retry: 30

              Master_Log_File:

         Read_Master_Log_Pos: 4

               Relay_Log_File: relay-bin.000001

               Relay_Log_Pos: 4

       Relay_Master_Log_File:

            Slave_IO_Running: No

            Slave_SQL_Running: Yes

              Replicate_Do_DB: lwh

         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: NULL

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 1236

                Last_IO_Error: Got fatal error 1236 from master when reading dat                                                                                       a from binarylog: ‘Binary log is not open‘

               Last_SQL_Errno: 0

               Last_SQL_Error:

1 row in set (0.00 sec)

 

[[email protected] ~]# tail/var/log/mysqld.log

140921 0:02:42 [Note] /usr/libexec/mysqld: ready for connections.

Version: ‘5.1.52-log‘  socket: ‘/var/lib/mysql/mysql.sock‘  port: 3306 Source distribution

140921 0:02:42 [Note] Slave SQL thread initialized, starting replication in log‘FIRST‘ at position 0, relay log ‘./relay-bin.000001‘ position: 4

140921 0:02:42 [Note] Slave I/O thread: connected to master‘[email protected]:3306‘,replication started in log ‘FIRST‘ at position 4

140921 0:02:42 [ERROR] Error reading packet from server: Binary log is not open( server_errno=1236)

140921  0:02:42 [ERROR] Slave I/O: Got fatal error1236 from master when reading data from binary log: ‘Binary log is not open‘,Error_code: 1236  翻译大概是有致命错误1236从二进制日志读取数据时从主:“二进制日志不开放,下面就进行了刷新日志

140921 0:02:42 [Note] Slave I/O thread exiting, read up to log ‘FIRST‘,position 4

140921 2:15:04 [Note] Error reading relay log event: slave SQL thread waskilled

140921 2:16:06 [Note] Slave SQL thread initialized, starting replication in log‘FIRST‘ at position 0, relay log ‘./relay-bin.000001‘ position: 4

140921 2:16:06 [Note] Slave I/O thread: connected to master‘[email protected]:3306‘,replication started in log ‘FIRST‘ at position 4

 

mysql> stop slave;

Query OK, 0 rows affected (0.00 sec)

 

mysql> flush logs;

Query OK, 0 rows affected (0.14 sec)

 

mysql> start slave;

Query OK, 0 rows affected (0.08 sec)

 

mysql> show slave status\G;

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

               Slave_IO_State: Waiting formaster to send event

                  Master_Host: 192.168.18.112

                  Master_User: tongbu

                  Master_Port: 3306

                Connect_Retry: 30

              Master_Log_File: mysql-bin.000006

         Read_Master_Log_Pos: 106

               Relay_Log_File: relay-bin.000008

                Relay_Log_Pos: 251

       Relay_Master_Log_File: mysql-bin.000006

            Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB: lwh

         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: 106

              Relay_Log_Space: 545

              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: 0

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error:

               Last_SQL_Errno: 0

               Last_SQL_Error:

1 row in set (0.00 sec)

 

ERROR:

No query specified

时间: 2024-12-29 07:55:06

Linux 下mysql的双主热备的相关文章

Mysql+Keepalived双主热备高可用操作步骤详细解析

mysql+keepalived双主热备高可用的介绍: 我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.使用Keepalived,可以通过虚拟IP,实现双主对外的统一接口以及自动检查.失败切换机制,从而实现MySQL数据库的

Mysql+keeoalived双主热备高可用操作记录

我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.之前梳理了Mysql主从同步,下面说下Mysql+keeoalived双主热备高可用方案的实施. 1)Keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议.在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器. 2)VRRP路由器

Mysql+Keepalived双主热备高可用操作记录

环境: ubuntu18.04.2 mysql5.7.21 1 #1)安装keepalived并将其配置成系统服务.master1和master2两台机器上同样进行如下操作: 2 apt-get install libssl-dev 3 apt-get install openssl 4 apt-get install libpopt-dev 5 [[email protected] ~]# cd /usr/local/src/ 6 [[email protected] src]# wget h

mysql+keepalived 双主热备高可用

理论介绍:我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.使用Keepalived,可以通过虚拟IP,实现双主对外的统一接口以及自动检查.失败切换机制,从而实现MySQL数据库的高可用方案. 环境说明:版本 version

MySQL高可用性之Keepalived+MySQL(双主热备)

MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了双主对外的统一接口以及自动检查.失败切换机制.联合使用,可以实现MySQL数据库的高可用方案. 环境描述:OS:CentOS6.5_X64MASTER:192.168.196.133BACKUP:192.168.196.134VIP:192.168.196.135 操作系统时间一致更改:# date

Mysql双主热备+LVS+Keepalived高可用操作记录

MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.然而MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负载均衡,如果其中master宕掉的话需要手动切换到另外一个master,而不能自动进行切换.前面介绍了Mysql+Keepalived双主热备高可用方案记录,那篇文档里没有使用到LVS(实现负载均衡),而下面要介绍的就是如何通过Keepalived+LVS方式来是实现MySQL的高可用性,利用LVS

Mysql + keepalived 实现双主热备读写分离【转】

Mysql + keepalived 实现双主热备读写分离 2013年6月16日frankwong发表评论阅读评论 架构图 系统:CentOS6.4_X86_64软件版本:Mysql-5.6.12,Keepalived-1.2.7环境简介:1.Master-A 192.168.1.168 (Mysql+Keepalived)2.Master-B 192.168.1.169 (Mysql+Keepalived)3.写入VIP 192.168.100 (168主,169从)4.读取VIP 192.1

​Keepalive实现mysql双主热备

Keepalive实现mysql双主热备 环境描述: OS: CentoOS6.6_X64 Node1:172.16.10.1 Node2:172.16.10.2 VIP:172.16.10.10 1.配置主机互信 Node1: [[email protected]~]# ifconfig eth0 eth0      Link encap:Ethernet  HWaddr 00:0C:29:11:21:56            inet addr:172.16.100.1  Bcast:17

MySql数据库双主(双向)同步实现数据库双主热备

MySql数据库双主(双向)同步实现数据库双主热备配置步骤有一点复杂,大家一定要看清楚每一步小细节哦,希望文章对各位会带来帮助呀. 之前写过一篇 mysql Master Slave主从同步(复制)配置,属于数据库备份级别的.现在的需求是,两台服务器上都装有数据库,为了防止某一服务器出现问题而影响业务的运行,需要准备两台服务器分别运行mysql,且需要两台服务器的数据是保持同步的.也就是现在要说的mysql双向同步,实现数据库主备模式. 基础环境 操作服务器系统:Ubuntu 12.04 64-