热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

drbdmysql权限问题_DRBDMysql方案

DRBDMysql方案测试环境:rhel5.5,drbd8.0.7,mysql5.0.51-rc-log1、首先从8.0.7版本的包)2、

DRBD Mysql方案

测试环境:rhel5.5,drbd 8.0.7,mysql5.0.51-rc-log

1、首先从8.0.7版本的包)

2、检查主机上面有没有linux的内核源代码,如果没有,需要找到相对应版本的源代码包安装上去。

3、开始安装drbd:

1)解压:tar -zxvf drbd-8.0.7.tar.gz

2)进入drbd源码目录,根据kernel源码位置来编译drbd:

make KDIR=/usr/src/kernel/    (如果没有更改过内核,可以直接运行make,编译程序会到/lib/module里面去自己根据相关配置寻找到kernel源码)

make install

如果没有报错,应该基本install好了,检查是否生成了相应的文件:/etc/drbd.conf ;

/etc/init.d/drbd ;以及./drbd/drbd.ko

同时系统应该至少多了以下两个命令:drbdadm和drbdsetup

不要删除此源码目录,后面还会用到里面的./scripts/drbd.conf和./drbd/drbd.ko

4、现在可以加载安装drbd模块了

insmod drbd.ko或者modprobe drbd

通过lsmod检查是否已经成功

#lsmod |grep drbd

如果有,则表示成功了

5、更改drbd配置文件:

/etc/drbd.conf

[root@mysql1 ha.d]# cat /etc/drbd.conf

on mysql1 {

device

/dev/drbd0;

disk

/dev/i2o/hda9;

address

10.0.65.45:8888;

flexible-meta-disk  internal;

}

on mysql2 {

device    /dev/drbd0;

disk

/dev/sde2;

address   10.0.65.106:8888;

meta-disk internal;

}

6、primary node设置:

1)创建matadata:

#drbdadm create-md all

2)启动drbd:

#/etc/init.d/drbd start

3)设置为主节点:

#drbdadm—

–overwrite-data-of-peer primary all

4)在新设备上面创建文件系统

#mkfs.ext3 /dev/drbd0

5)将文件系统mount上

#mkdir /drbddata

#mount /dev/drbd0 /drbddata

7、secondary node设置:

1)创建matadata:

#drbdadm create-md all

2)启动drbd:

#/etc/init.d/drbd start

注:这里不要创建文件系统(因为这些信息都会从主节点同步过来的)。

8、primary和secondary节点都配置完并且都启动后,开始检查配置是否成功

1)检查进程:

a) primary :

[root@mysql1 /]# ps -auxf |grep drbd

Warning: bad syntax, perhaps a bogus‘-’? See

/usr/share/doc/procps-3.2.3/FAQ

root

5454  0.0  0.0  3744  672 pts/0

S+   17:36

0:00          \_ grep drbd

root

5389  0.6  0.0     0    0

?        S

17:16   0:07 [drbd0_worker]

root

5403  1.1  0.0     0    0

?        S

17:16   0:14 [drbd0_receiver]

root

5448  0.3  0.0     0    0

?        S

17:35   0:00 [drbd0_asender]

b) secondary:

root@mysql2:/>ps -auxf |grep drbd

Warning: bad syntax, perhaps a bogus‘-’? See

/usr/share/doc/procps-3.2.3/FAQ

root

5272  0.0  0.0  4752  640 pts/1

S+   16:27

0:00          \_ grep drbd

root

5168  0.0  0.0     0    0

?        S

16:07   0:00 [drbd0_worker]

root

5182  2.3  0.0     0    0

?        S

16:07   0:29 [drbd0_receiver]

root

5270  1.9  0.0     0    0

?        S

16:25   0:03 [drbd0_asender]

可以看到两个节点的进程都起来了,每个drbd设备会有三个进程:drbd0_worker是drbd0的主要进程,drbd0_asender是primary上drbd0的数据发送进程,drbd0_receiver是secondary上drbd0的数据接收进程。

2)查看/dev/drbd文件的输出:

[root@mysql1 /]# cat /proc/drbd

version: 8.0.7 (api:86/proto:86)

GIT-hash: cf14288833afe95db396075f8530a5960d29e498

build by root@mysql1, 2008-03-01 17:02:58

0: cs:SyncSource

st:Primary/Secondary ds:UpToDate/Inconsistent C r—

ns:6575584 nr:36

dw:289636 dr:6298278 al:142 bm:515 lo:1 pe:227 ua:30 ap:0

[====>...............] sync’ed: 21.8% (9336/11932)M

finish: 0:52:36 speed: 3,024 (4,176) K/sec

resync: used:1/31 hits:454805 misses:514 starving:0 dirty:0 changed:514

act_log: used:0/257 hits:72258 misses:154 starving:0 dirty:12 changed:142

root@mysql2:/>cat /proc/drbd

version: 8.0.7 (api:86/proto:86)

GIT-hash:

cf14288833afe95db396075f8530a5960d29e498 build by root@mysql2, 2008-02-29

21:21:46

0: cs:SyncTarget

st:Secondary/Primary ds:Inconsistent/UpToDate C r—

ns:36 nr:5550548

dw:5550552 dr:89 al:2 bm:326 lo:2 pe:97 ua:1 ap:0

[==>.................] sync’ed: 13.5% (10330/11932)M

finish: 0:28:37 speed: 6,148 (4,248) K/sec

resync: used:2/31 hits:391148 misses:451 starving:0 dirty:0 changed:451

act_log: used:0/257 hits:7 misses:2 starving:0 dirty:0 changed:2

输出文件上面最开始是drbd的版本信息,然后就是数据同步的一些状态信息,从mysql的文档上介绍了每一个状态的意思如下:

cs—connection state

st—node state (local/remote)

ld—local data consistency

ds—data consistency

ns—network send

nr—network receive

dw—disk write

dr—disk read

pe—pending (waiting for ack)

ua—unack’d (still need to send ack)

al—access log write count

3)更进一步验证数据是否同步正确了:

a)在mysql1上将该文件系统umount,然后执行drbdadm secondary all,改成secondary模式

[root@mysql1 /]# umount

/drbddata

[root@mysql1 /]#

drbdadm secondary all

b)在原mysql2执行drbdadm

primary all改成primary模式,再mount文件系统

root@mysql2:/>drbdadm

primary all

root@mysql2:/>mount

/dev/drbd0 /drbddata

检查之前在mysql1下写入的文件是否已经完全同步到mysql2下面,经验证,数据已经同步好了

4)最后连同mysql一起手工测试一次切换:

a)主节点mysql1下关闭mysql,释放资源,将资源切换成secondary模式:

[root@mysql1 ha.d]# mysqladmin -u root

shutdown

[root@mysql1 ha.d]# umount /drbddata

[root@mysql1 ha.d]# drbdadm secondary

all

b)次节点mysql2下获取资源,mount上,切换成primary模式,并启动mysql:

root@mysql2:/root/mysql-5.0.51a>               drbdadm primary all

root@mysql2:/root/mysql-5.0.51a>               mount /dev/drbd0 /drbddata

root@mysql2:/usr/local/mysql/bin>

./mysqld_safe–user=mysql

&

[1] 27900

root@mysql2:/usr/local/mysql/bin>Starting mysqld daemon with databases from

/drbddata/mysqldata

root@mysql2:/usr/local/mysql/bin>tail

-f /drbddata/mysqldata/mysql2.err

080303 13:53:25  mysqld started

080303 13:53:26  InnoDB: Started;

log sequence number 0 43656

080303 13:53:26 [Note]

/usr/local/mysql/libexec/mysqld: ready for connections.

Version:‘5.0.51a-log’socket:‘/usr/local/mysql/sock/mysql.sock’port: 3306  Source distribution

c)登入数据库中检查数据,这里我同时在新的主节点上面测试了写,以便在后面切换回主节点后检查数据是否也正常:

root@mysql2:/usr/local/mysql/bin>mysql -u root

Welcome to the MySQL monitor.

Commands end with ; or \g.

Your MySQL connection id is 1 to server

version: 5.0.51a-log

Type‘help;’or‘\h’for help. Type‘\c’to clear the buffer.

mysql> show databases;

+——————–+

|

Database           |

+——————–+

| information_schema |

|

mysql

|

|

test

|

+——————–+

3 rows in set (0.03 sec)

mysql> use test;

Reading table information for completion

of table and column names

You can turn off this feature to get a

quicker startup with -A

Database changed

mysql> show tables;

+—————-+

| Tables_in_test |

+—————-+

|

t1             |

|

t2             |

|

t3             |

+—————-+

3 rows in set (0.00 sec)

mysql> create table t4(id int);

Query OK, 0 rows affected (0.07 sec)

mysql> exit

Bye

root@mysql2:/usr/local/mysql/bin>

d)再通过之前相同的切换步骤切换回各自原来的模式,启动主节点的mysql,并检查数据:

[root@mysql1 ha.d]# drbdadm primary all

[root@mysql1 ha.d]# mount /dev/drbd0 /drbddata

[root@mysql1 ha.d]# mysqld_safe–user=mysql &

[1] 8451

[root@mysql1 ha.d]# Starting mysqld

daemon with databases from /drbddata/mysqldata

[root@mysql1 ha.d]#

[root@mysql1 ha.d]#

[root@mysql1 ha.d]#

[root@mysql1 ha.d]#

[root@mysql1 ha.d]# mysql -uroot

Welcome to the MySQL monitor.

Commands end with ; or \g.

Your MySQL connection id is 1 to server

version: 5.0.51a-log

Type‘help;’or‘\h’for help. Type‘\c’to clear the buffer.

mysql> use test;

Reading table information for completion

of table and column names

You can turn off this feature to get a

quicker startup with -A

Database changed

mysql> show tables;

+—————-+

| Tables_in_test |

+—————-+

|

t1             |

|

t2             |

|

t3             |

|

t4             |

+—————-+

4 rows in set (0.00 sec)

mysql> insert into t4 values(111);

Query OK, 1 row affected (0.01 sec)

mysql> commit;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from t4;

+——+

| id   |

+——+

|  111 |

+——+

1 row in set (0.00 sec)

几个注意点:

1、除了primary节点的文件系统是手工创建的之外,其他的所有secondary节点的文件系统都是通过同步完成的,两边的设备大小好像并不要求完全一样的大小,在我测试的过程中,两边用于drbd设备的分区大小相差很大,但好像并没有出现错误,从drbd相关文档上看到这个并不会导致问题。但是如果主节点比备节点大,而且用的空间也超出了备节点空间大小会有问题,具体会怎样还没有测试到。

2、在mount drbd的设备之前,该节点必须已经设置为primary模式,而且如果一边没有umount,另一边是无法mount上的,直接mount会报如下错误:

root@mysql2:/>mount /dev/drbd0

/drbddata

mount: block device /dev/drbd0 is

write-protected, mounting read-only

也就是说,在同步的过程中,只有一个节点的数据可见,也就是不能通过我们人直接简单的查看数据文件等方式之间验证数据是否正常。不过看文档说好像可以通过手动设置一些信息来查看是否正常



推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
author-avatar
乐橙味_367
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有