设为首页 收藏本站
查看: 1237|回复: 0

[经验分享] 数据库keepalived部署文档

[复制链接]

尚未签到

发表于 2018-12-29 13:02:19 | 显示全部楼层 |阅读模式
  





一.mysql数据库RPM安装包安装




rpm –qa |grep -i mysql     //查看是否安装了数据库

rpm -e 文件名–nodeps      //卸载已安装的文件

tar –xzvf ./ MariaDB-10-linux.tar.gz  //解压MySQL rpm安装包

rpm -ivh *.rpm --force --nodeps     //安装MySQL数据库

rpm -qa|grep -i mariadb          //验证安装是否成功

安装成功显示如下:

[root@Test2 MariaDB-10-linux]# rpm -qa |grep -i  mariadb

MariaDB-Galera-server-10.0.14-1.el6.x86_64

MariaDB-cassandra-engine-10.0.15-1.el6.x86_64

MariaDB-common-10.0.15-1.el6.x86_64

MariaDB-test-10.0.15-1.el6.x86_64

MariaDB-oqgraph-engine-10.0.15-1.el6.x86_64

MariaDB-shared-10.0.15-1.el6.x86_64

MariaDB-client-10.0.15-1.el6.x86_64

MariaDB-server-10.0.15-1.el6.x86_64

MariaDB-Galera-test-10.0.14-1.el6.x86_64


启动数据库:

[root@Test2 MariaDB-10-linux]# servicemysql start

Starting MySQL.. SUCCESS!

添加root用户密码

[root@Test2 MariaDB-10-linux]# mysqladmin-uroot password 123

登录进入数据库

[root@Test2 MariaDB-10-linux]# mysql -uroot-p123






数据库主从模式





二.主数据库



1.创建一个复制用户,具有replication slave 权限。

MariaDB [(none)]> grant replicationslave on *.* to 'copy'@'192.168.98.130' identified by 'copy';

Query OK, 0 rows affected (0.00 sec)


MariaDB [(none)]> flush privileges;

Query OK, 0 rows affected (0.00 sec)



2.编辑my.cnf文件

[mysqld]

key_buffer_size=2048M

server-id=132

log-bin=/var/lib/mysql/mysql-bin

log-slave-updates=1



3重启MySQL数据库

[root@Test0 ~]# service mysql restart

Shutting down MySQL.. SUCCESS!

Starting MySQL.. SUCCESS!



4设置读写锁

MariaDB [(none)]> flush tables with readlock;

Query OK, 0 rows affected (0.00 sec)



5得到binlog日志和偏移量

MariaDB [(none)]>  show master status;

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

| File             | Position | Binlog_Do_DB |Binlog_Ignore_DB |

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

| mysql-bin.000002 |      312 |              |                  |

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

1 row in set (0.00 sec)

*******************************************************************************



6.备份数据库

[root@Test0 ~]# mysqldump -uroot -p123 test>test.sql

解锁

MariaDB [(none)]> unlock tables;

Query OK, 0 rows affected (0.00 sec)

************************************************************************************************************************************************************





2从数据库



1编辑配置文件

vi /etc/my.cnf.d/server.conf

添加

server-id=109



2.重启数据库

[root@Test2 MariaDB-10-linux]# servicemysql restart

Shutting down MySQL... SUCCESS!

Starting MySQL.. SUCCESS!



3.停止复制

MariaDB [(none)]> stop slave;

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


MariaDB [(none)]> change master tomaster_host='192.168.98.132', master_user='copy', master_password='copy',master_log_file='mysql-bin.0000013', master_log_pos=365;



出现错误:

MariaDB [(none)]> show slave status\G;

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

               Slave_IO_State:

                  Master_Host: 192.168.98.132

                  Master_User: copy

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File:mysql-bin.0000013

         Read_Master_Log_Pos: 365

               Relay_Log_File:Test2-relay-bin.000001

                Relay_Log_Pos: 4

       Relay_Master_Log_File: mysql-bin.0000013

            Slave_IO_Running: No

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

              Relay_Log_Space: 248

              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 error1236 from master when reading data from binary log: 'Could not find first logfile name in binary log index file'

               Last_SQL_Errno: 0

               Last_SQL_Error:

Replicate_Ignore_Server_Ids:

            Master_Server_Id: 132

               Master_SSL_Crl:

          Master_SSL_Crlpath:

                   Using_Gtid: No

                  Gtid_IO_Pos:

1 row in set (0.00 sec)


ERROR: No query specified



解决方法:

MariaDB [(none)]> stop slave;

Query OK, 0 rows affected (0.00 sec)


MariaDB [(none)]> CHANGE MASTER TOMASTER_LOG_FILE='mysql-bin.000013',MASTER_LOG_POS=365;

Query OK, 0 rows affected (0.00 sec)


MariaDB [(none)]> start slave;




4检查主从是否同步正常

MariaDB [(none)]> show slave status\G;

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

               Slave_IO_State: Waiting formaster to send event

                  Master_Host: 192.168.98.132

                  Master_User: copy

                  Master_Port: 3306

                Connect_Retry: 60

             Master_Log_File:mysql-bin.000013

         Read_Master_Log_Pos: 365

               Relay_Log_File:Test2-relay-bin.000002

                Relay_Log_Pos: 535

       Relay_Master_Log_File: mysql-bin.000013

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

              Relay_Log_Space: 832

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

               Master_SSL_Crl:

          Master_SSL_Crlpath:

                   Using_Gtid: No

                  Gtid_IO_Pos:

1 row in set (0.00 sec)


ERROR: No query specified




5主数据库查看:

MariaDB [(none)]> show processlist\G;

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

     Id: 5

   User: root

   Host: localhost

     db: NULL

Command: Query

   Time: 0

  State: init

   Info: show processlist

Progress: 0.000

*************************** 2. row***************************

     Id: 9

   User: copy

   Host: 192.168.98.130:56411

     db: NULL

Command: Binlog Dump

   Time: 54

  State: Master has sent all binlog to slave; waiting for binlog to beupdated

   Info: NULL

Progress: 0.000

2 rows in set (0.00 sec)


ERROR: No query specified


测试:

创建数据库:

CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;






三.数据库keepalive



1下载keepalived软件

http://www.keepalived.org/software/keepalived-1.3.7.tar.gz


[root@Test0 usr]# cd keepalived-1.1.5

[root@Test0 keepalived-1.1.5]# ls

AUTHOR bin  ChangeLog  configure configure.in  CONTRIBUTORS  COPYING doc  genhash  INSTALL install-sh  keepalived  keepalived.spec  lib Makefile.in  README  TODO VERSION

[root@Test0 keepalived-1.1.5]# mkdir -p/usr/local/keepalived



2配置keppalived

[root@Test0 keepalived-1.1.5]# ./configure--prefix=/usr/local/keepalived



问题:1

configure: error:

  !!!OpenSSL is not properly installed on your system. !!!

  !!!Can not include OpenSSL headers files.            !!!



解决方法:

yum -y install openssl-devel




问题:2

configure: error: Popt libraries isrequired



解决方法:

[root@Test2 keepalived-1.1.5]# yum installpopt-devel

make

make install

root@Test0 keepalived-1.1.5]# make install

make -C keepalived install

make[1]: Entering directory`/usr/keepalived-1.1.5/keepalived'

install -d /usr/local/keepalived/sbin

install -m 700 ../bin/keepalived/usr/local/keepalived/sbin/

install -d /usr/local/keepalived/etc/init.d

install -m 755 etc/init.d/keepalived.init/usr/local/keepalived/etc/init.d/keepalived

install -d /usr/local/keepalived/etc/keepalived/samples

install -m 644etc/keepalived/keepalived.conf /usr/local/keepalived/etc/keepalived/

install -m 644 ../doc/samples/*/usr/local/keepalived/etc/keepalived/samples/

make[1]: Leaving directory`/usr/keepalived-1.1.5/keepalived'

make -C genhash install

make[1]: Entering directory`/usr/keepalived-1.1.5/genhash'

install -d /usr/local/keepalived/bin

install -m 755 ../bin/genhash/usr/local/keepalived/bin/

make[1]: Leaving directory`/usr/keepalived-1.1.5/genhash'

[root@Test0 keepalived-1.1.5]#

keepalive 安装成功




拷贝相关启动文件到系统目录

cp/usr/keepalived-1.3.7/keepalived/etc/init.d/keepalived  /etc/init.d/

cp /usr/local/sbin/keepalived /usr/sbin/

cp/usr/keepalived-1.3.7/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp -r /usr/keepalived-1.3.7/keepalived/etc/keepalived/keepalived.conf  /etc/keepalived/



3检查脚本



3.1判断mysql进程

编写检查MySQL进程是否存活shell脚本

E:\文档\linux服务器脚本\check_mysql.bash

1.   #!/bin/bash

2.   MYSQL=/usr/bin/mysql

3.   MYSQL_HOST=localhost

4.   MYSQL_USER=root

5.   MYSQL_PASSWORD=123

6.   CHECK_TIME=3

7.   #mysql  is working MYSQL_OK is 1 , mysql down MYSQL_OK is 0

8.   MYSQL_OK=1

9.   function check_mysql_health (){

10.  $MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD -e "show status;" >/dev/null 2>&1

11.  if [ $? = 0 ] ;then

12.       MYSQL_OK=1

13.  else

14.       MYSQL_OK=0

15.  fi

16.       return $MYSQL_OK

17.  }

18.  while [ $CHECK_TIME -ne 0 ]

19.  do

20.       let "CHECK_TIME-=1"  ##(小提示这里我们采用的是let进行整数的运算当然您可以用expr,感觉let省去了$比较方便)

21.       check_mysql_health

22.       if [ $MYSQL_OK = 1 ] ; then

23.            CHECK_TIME=0

24.            exit 0

25.       fi

26.

27.       if [ $MYSQL_OK -eq 0 ] &&  [ $CHECK_TIME -eq 0 ]

28.       then

29.            /etc/init.d/keepalived stop

30.       exit 1

31.       fi

32.       sleep 1

33.  done



3.2判断防火墙是否打开

1.   #! /bin/bash

2.

3.   /etc/init.d/iptables stop




4 keepalived配置文件

主库配置文件

1.   ! Configuration File for keepalived

2.

3.   global_defs {

4.      notification_email {

5.      yuchao_cacti@163.com

6.   }

7.

8.      notification_email_from yuchao_cacti@163.com

9.      smtp_server smtp.163.com

10.     smtp_connect_timeout 30

11.     router_id LVS_DEVEL

12.     vrrp_skip_check_adv_addr

13.     vrrp_strict

14.     vrrp_garp_interval 0

15.     vrrp_gna_interval 0

16.  }

17.  vrrp_script check_run {

18.     script "/home/sh/check_mysql.sh"

19.     interval 5

20.  }

21.

22.  vrrp_instance VI_1 {

23.      state MASTER

24.      interface eth0

25.      virtual_router_id 51

26.      priority 100

27.      advert_int 1

28.      authentication {

29.          auth_type PASS

30.          auth_pass 1111

31.      }

32.      virtual_ipaddress {

1.          192.168.98.155/24  dev eth0 label eth0:0

33.      }

34.      track_script {

35.      check_run

36.      }

37.           notify_master /home/sh/close_iptables.sh

38.      notify_backup /home/sh/close_iptables.sh

39.  }

备用配置文件

2.   ! Configuration File for keepalived

3.

4.   global_defs {

5.      notification_email {

6.      yuchao_cacti@163.com

7.   }

8.

9.      notification_email_from yuchao_cacti@163.com

10.     smtp_server smtp.163.com

11.     smtp_connect_timeout 30

12.     router_id LVS_DEVEL

13.     vrrp_skip_check_adv_addr

14.     vrrp_strict

15.     vrrp_garp_interval 0

16.     vrrp_gna_interval 0

17.  }

18.  vrrp_script check_run {

19.     script "/home/sh/check_mysql.sh"

20.     interval 5

21.  }

22.

23.  vrrp_instance VI_1 {

24.      state BACKUP

25.      interface eth0

26.      virtual_router_id 51

27.      priority 99

28.      advert_int 1

29.      authentication {

30.          auth_type PASS

31.          auth_pass 1111

32.      }

33.      virtual_ipaddress {

34.          192.168.98.155/24 dev eth0 label eth0:0

35.      }

36.      track_script {

37.      check_run

38.      }

39.      notify_master/home/sh/close_iptables.sh

40.      notify_backup /home/sh/close_iptables.sh

41.  }

42.  virtual_server 192.168.98.155 3306 {

43.       delay_loop 2

44.       lb_algo wrr

45.       lb_kind DR

46.       persistence_timeout 60

47.       protocol TCP

48.       real_server 192.168.98.130 3306 {

49.           weight 3

50.           TCP_CHECK {

51.               connect_timeout 10

52.               nb_get_retry 3

53.               delay_before_retry 3

54.               connect_port 3306

55.           }

56.       }

57.  }

配置完成



5重新启动keepalived 和mysql

service keepalived start

service mysql start

主设备和从设备做一样的操作


6查看是否正常绑定了虚拟的IP地址

master(主设备)ifconfig

eth0     Link encap:Ethernet  HWaddr00:50:56:26:31:26

         inet addr:192.168.98.132 Bcast:192.168.98.255 Mask:255.255.255.0

         inet6 addr: fe80::250:56ff:fe26:3126/64 Scope:Link

         UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1

         RX packets:15300 errors:0 dropped:0 overruns:0 frame:0

         TX packets:15135 errors:0 dropped:0 overruns:0 carrier:0

         collisions:0 txqueuelen:1000

         RX bytes:2745739 (2.6 MiB)  TXbytes:2846628 (2.7 MiB)


eth0:0    Link encap:Ethernet  HWaddr 00:50:56:26:31:26

          inet addr:192.168.98.155  Bcast:0.0.0.0 Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1


lo       Link encap:Local Loopback

         inet addr:127.0.0.1 Mask:255.0.0.0

         inet6 addr: ::1/128 Scope:Host

         UP LOOPBACK RUNNING MTU:16436  Metric:1

         RX packets:4322 errors:0 dropped:0 overruns:0 frame:0

         TX packets:4322 errors:0 dropped:0 overruns:0 carrier:0

         collisions:0 txqueuelen:0

         RX bytes:250079 (244.2 KiB)  TXbytes:250079 (244.2 KiB)

backup(从设备)ifconfig

eth0     Link encap:Ethernet  HWaddr00:0C:29:C3:8D:91

         inet addr:192.168.98.130 Bcast:192.168.98.255 Mask:255.255.255.0

         inet6 addr: fe80::20c:29ff:fec3:8d91/64 Scope:Link

         UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1

         RX packets:15867 errors:0 dropped:0 overruns:0 frame:0

         TX packets:7302 errors:0 dropped:0 overruns:0 carrier:0

         collisions:0 txqueuelen:1000

         RX bytes:1913375 (1.8 MiB)  TXbytes:1218646 (1.1 MiB)


lo       Link encap:Local Loopback

         inet addr:127.0.0.1 Mask:255.0.0.0

         inet6 addr: ::1/128 Scope:Host

         UP LOOPBACK RUNNING MTU:16436  Metric:1

         RX packets:4212 errors:0 dropped:0 overruns:0 frame:0

         TX packets:4212 errors:0 dropped:0 overruns:0 carrier:0

         collisions:0 txqueuelen:0

         RX bytes:235872 (230.3 KiB)  TXbytes:235872 (230.3 KiB)




问题3:

发现不能ping 通虚拟IP地址



解决方法:

关闭防火墙




问题4:不能绑定虚拟IP地址



解决方法:

1下载最新版本的keepalived软件




6测试MySQL自动切换

同时主设备和从设备的MySQL  keepalived服务

主设备关闭/开启

从另外一同网段主机访问VIP---mysql


[root@Test01 ~]# mysql -umaster -p1111-h192.168.98.155

mysql> show variables like  "server_id";

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

| Variable_name | Value |

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

| server_id     | 132  |

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

1 row in set (0.00 sec)

关闭主设备时,自动切换到备用数据库

mysql> show variables like  "server_id";

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

| Variable_name | Value |

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

| server_id     | 130  |

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

1 row in set (0.00 sec)

仅在本地测试环境中使用,生产环境还需要进一步完善






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657268-1-1.html 上篇帖子: KeepAlived实现高可用集群LVS 下篇帖子: 集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表