keepalive+mysql 主主配置

本文介绍如何在两台服务器上安装MySQL并配置主从复制,确保数据的一致性和高可用性。此外,还详细介绍了安装Keepalived进行故障转移的方法,包括配置文件的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.   环境说明:

机器名

eth0

说明

server01

192.168.100.30/24

Mysqlkeepalive

server02

192.168.100.31/24

Mysqlkeepalive

 

2.   安装mysql

去官网下载mysql5.5的安装包,源码安装比较麻烦所以忽略

MySQL-client-5.5.29-1.el6.x86_64.rpm  MySQL-server-5.5.29-1.el6.x86_64.rpm MySQL-devel-5.5.29-2.el6.x86_64.rpm

出现错误提示:

[root@server01 ~]# rpm -ivhMySQL-server-5.5.29-1.el6.x86_64.rpm

Preparing...               ########################################### [100%]

       file /usr/share/mysql/charsets/Index.xml from install ofMySQL-server-5.5.29-1.el6.x86_64 conflicts with file from packagemysql-libs-5.1.61-4.el6.x86_64

这个是因为安装了5.1的工具包的问题卸载加参数-nodeps不检查依赖

[root@server01 ~]# rpm -e --nodepsmysql-libs

[root@server01 ~]# rpm -ivh  MySQL-server-5.5.29-1.el6.x86_64.rpm

[root@server01 ~]# rpm -ivh  MySQL-client-5.5.29-1.el6.x86_64.rpm

 

3.   配置mysql

查看mysql安装路径

[root@server01 mysql]# whereis mysql

mysql: /usr/bin/mysql /usr/lib64/mysql/usr/share/mysql /usr/share/man/man1/mysql.1.gz

创建配置文件夹可以直接放在/etc目录下

 [root@server01mysql]# cp my-medium.cnf  /etc/

[root@server01 mysql]# mv my-medium.cnfmy.cnf

[root@server01 mysql]# chown  mysql:mysql /etc/my.conf

配置my.cnf

master.cnf:

[mysqld]

server-id=1

log-bin=server01.log

relay-log-index=slave-relay-bin.index #配置双主模式所以服务器都要配置从的relay-log

relay-log=slave-relay-bin

innodb_flush_log_at_trx_commit=1

sync_binlog=1

注意:为了使用事务的InnoDB在复制中最大的持久性和一致性,你应该指定innodb_flush_log_at_trx_commit=1,sync_binlog=1 选项。

需要在从机的slave.cnf文件的【mysqld】部分增加server-id选项。server-id的值类似主机,必须是 1到2 的32次方之间的一个正整数,而且必须和主机的ID不一样。如果你设置多台从机,那么每台必须有别于主机和其他从机的唯一的server-id值。可以把server-id值认为是类似IP地址的东西:这些ID在复制服务器通信的时候标识了每台唯一的服务器实例。

slave.cnf:

[mysqld]

server-id=2

log-bin=server02-bin.log

relay-log-index=slave-relay-bin.index

relay-log=slave-relay-bin

innodb_flush_log_at_trx_commit=1

sync_binlog=1

 

设置mysql自启动

[root@server01 mysql]# chkconfig  mysql on

[root@server01 etc]# service  mysql start

[root@server01 ~]# mysqladmin -urootpassword password

4.    创建复制账户

[root@server01 ~]# mysql –uroot

mysql> create userrepl_user@192.168.100.31;

mysql> grant replication slave on *.* torepl_user@192.168.100.31 identified by 'password';

 

锁住主机,禁止用户写入mysql

mysql> flush tables with read lock;

Query OK, 0 rows affected (0.00 sec)

不改变mysql用户,复制test测试同步库

mysqldump -urrot -password test >test.sql

从机启动会解锁

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec

拷贝test.sql到从机

从机执行

mysql -uroot -ppassword test < test.sql

回到主机查看当前日志偏差值

mysql> show master status;

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

| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB|

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

| server01-bin.000003 |     4921 |              |                  |

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

1 row in set (0.00 sec)

 

在从机上初始化复制了。在从机上执行以下命令

 

mysql> slave stop;

Query OK, 0 rows affected, 1 warning (0.00sec)

 

mysql> change master toMASTER_HOST='192.168.100.30',

   -> MASTER_USER='repl_user',

   -> MASTER_PASSWORD='password',

   -> MASTER_LOG_FILE='server01-bin.000003',

   -> MASTER_LOG_POS= 2877;

Query OK, 0 rows affected (0.03 sec)

 

mysql> slave start;

Query OK, 0 rows affected (0.00 sec)

 

查看状态

mysql> show slave status\G

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

               Slave_IO_State: Waiting formaster to send event

                  Master_Host: 192.168.100.30

                  Master_User: repl_user

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File:server01-bin.000003

         Read_Master_Log_Pos: 4921

               Relay_Log_File:slave-relay-bin.000002

                Relay_Log_Pos: 256

       Relay_Master_Log_File: server01-bin.000003

            Slave_IO_Running: Yes

           Slave_SQL_Running: Yes

              Replicate_Do_DB:

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

              Relay_Log_Space: 412

              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:

 Replicate_Ignore_Server_Ids:

            Master_Server_Id: 1

1 row in set (0.00 sec)

5.    验证从机复制特性

主机数据库内容如下:

mysql> use test

Database changed

mysql> select * from new

   -> ;

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

| id | col1 | col2 |

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

|  1| hah  | test |

|  2| s    | b    |

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

2 rows in set (0.00 sec)

从机数据库内容:

Database changed

mysql> select * from new;

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

| id | col1 | col2 |

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

|  1| hah  | test |

|  2| s    | b    |

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

2 rows in set (0.02 sec)

 

回到主机修改数据:

mysql> update new setcol1='haha',col2='change' where id='1';

Query OK, 1 row affected (0.04 sec)

Rows matched: 1  Changed: 1 Warnings: 0

 

mysql> select * from new

   -> ;

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

| id | col1 | col2   |

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

|  1| haha | change |

|  2| s    | b      |

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

2 rows in set (0.00 sec)

查看从机是否修改:

mysql> select * from new;

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

| id | col1 | col2   |

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

|  1| haha | change |

|  2| s    | b      |

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

2 rows in set (0.00 sec)

观察得出从机已经从主机同步到了数据。

 

6.   主主模式配置

现在的设置为192.168.100.30为主机,192.168.100.31为从机,

按照上述设置再将192.168.100.31设为主机,192.168.100.30设为从机。

设置完成后两台机器既相互为主机也相互为备机,都可以写入数据并同步到对方机器。

 

7.    安装keepalived(两台均安装)

安装依赖包

[root@server01 ~]# yum install -y gcc gcc+gcc-c++ openssl openssl-devel popt-devel

下载

[root@server01 ~]# wgethttp://www.keepalived.org/software/keepalived-1.2.7.tar.gz

[root@server01 ~]# tar -xzf  keepalived-1.2.7.tar.gz

[root@server01 ~]#./configure  --prefix=/usr/local/keeplived

[root@server01 ~]# make

[root@server01 ~]# make install

[root@server01 ~]# cp/usr/local/keeplived/sbin/keepalived /usr/bin/

[root@server01 ~]# cp /usr/local/keeplived/etc/sysconfig/keepalived  /etc/sysconfig/

[root@server01 ~]# cp/usr/local/keeplived/etc/rc.d/init.d/keepalived /etc/init.d/

[root@server01 ~]# mkdir /etc/keepalived

创建 vi keepalived.conf如下内容

! Configuration File for keepalived

global_defs {

   notification_email {

       cmwu@biencloud.com

    }

   

   notification_email_from haha@biencloud.com

   smtp_server 127.0.0.1

   router_id LVS_DEVEL

}

 

vrrp_instance VI_1 {

   state BACKUP

   interface eth0

   virtual_router_id 50

   priority 100

   advert_int 1

   nopreempt

   authentication {

       auth_type PASS

       auth_pass 1111

    }

 

virtual_ipaddress {

   192.168.100.40

    }

}

192.168.100.31上的配置文件为

global_defs {

   notification_email {

       cmwu@biencloud.com

    }

   

   notification_email_from haha@biencloud.com

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}

 

vrrp_instance VI_1 {

   state BACKUP

   interface eth0

   virtual_router_id 50

   priority 90

   advert_int 1

   authentication {

       auth_type PASS

       auth_pass 1111

    }

 

virtual_ipaddress {

   192.168.100.40

    }

}

[root@server01 ~]# ping 192.168.100.40

PING 192.168.100.40 (192.168.100.40) 56(84)bytes of data.

64 bytes from 192.168.100.40: icmp_seq=1ttl=64 time=0.262 ms

[root@server02 ~]# ping 192.168.100.40

PING 192.168.100.40 (192.168.100.40) 56(84)bytes of data.

64 bytes from 192.168.100.40: icmp_seq=1ttl=64 time=0.064 ms

两台服务器均可以ping通服务器。

Ip addr可以看到虚拟IP已经绑定到网卡上了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值