欢迎各位兄弟 发布技术文章
这里的技术是共享的
基于hb v2, crm来实现MlySQL高可用集群
nfs,samba,iscsi
NFS: MySQL app: data,配置文件
/etc/my.cnf --> /etc/mysql/mysql.cnf
$MYSQL_BASE
--default-extra-file = 额外的配置文件路径
crosync 好像直接提供了ra ,脚本告知配置文件的路径
OCF:提供参数,LSB是内设的,几乎没有参数
node1:mysql,mysql 两个节点mysql用户的uid,gid号一样? 或者nfs上写权限,两个mysql都得有
三个节点同理(nfs服务器,节点一,节点二)
nfs:
mysql数据最好在LVM上,即好扩展,又好备份,所以LVM要建在nfs上
在nfs服务器上 (192.168.0.75)
[root@mail ~]# hostname nfs.magedu.com
[root@mail ~]#
下面是马哥创建逻辑卷,我以前创建过了
[root@mail ~]# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 2610 20860402+ 8e Linux LVM
Disk /dev/sdb: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 2610 20964793+ 5 Extended
/dev/sdb5 1 200 1606437 8e Linux LVM
[root@mail ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 VolGroup00 lvm2 a-- 19.88G 0
/dev/sdb5 myvg lvm2 a-- 1.53G 1.34G
[root@mail ~]#
我在pv 的 /sdb5上的 VG myvg 上 建 lv mydata
[root@mail ~]# lvcreate -L 1G -n mydata myvg
Logical volume "mydata" created
[root@mail ~]#
在nfs服务器上 (192.168.0.75)
[root@mail ~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
LogVol00 VolGroup00 -wi-ao 17.88G
LogVol01 VolGroup00 -wi-ao 2.00G
mydata myvg -wi-a- 1.00G
mydata2 myvg -wi-ao 200.00M
[root@mail ~]#
在nfs服务器上 (192.168.0.75)
[root@mail ~]# mke2fs -j /dev/myvg/mydata #格式化 lv mydata
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
131072 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@mail ~]#
开机自动挂载 /dev/myvg/mydata,并通过nfs向外输出,里面要建一个叫做data的目录
要让mysql用户有读写权限 假设mysql为普通用户,只不过不让它登录,给它id号为3306
[root@mail ~]# groupadd -g 3306 mysql #建一个组,gid为 3306
groupadd:mysql 组已存在
[root@mail ~]# man useradd
[root@mail ~]# useradd -u 3306 -g mysql -s /sbin/nologin -M mysql #建一个用户 uid为3306 ,组为mysql, 不让它登录, -M表示不创建家目录 用户名为 mysql
useradd:用户 mysql 已存在
[root@mail ~]#
[root@mail ~]# id mysql
uid=306(mysql) gid=306(mysql) groups=306(mysql) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[root@mail ~]#
[root@mail ~]# mkdir /mydata
mkdir: 无法创建目录 “/mydata”: 文件已存在
[root@mail ~]#
[root@mail ~]# ls -la /mydata
总计 24
drwxr-xr-x 3 root root 4096 2019-07-12 .
drwxr-xr-x 32 root root 4096 12-03 09:30 ..
drwxr-xr-x 2 mysql mysql 4096 10-24 18:08 data
[root@mail ~]# rm -Rf /mydata/* #删掉原来的数据
[root@mail ~]# ls -la /mydata
总计 16
drwxr-xr-x 2 root root 4096 12-03 15:24 .
drwxr-xr-x 32 root root 4096 12-03 09:30 ..
[root@mail ~]#
[root@mail ~]# vim /etc/fstab
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
//192.168.0.75/tools /mnt cifs credentials=/etc/samba/cred.passwd 0 0
/dev/myvg/mydata2 /mydata2 ext3 defaults 0 0
/dev/myvg/mydata /mydata ext3 defaults 0 0
在nfs服务器上 (192.168.0.75)
[root@mail ~]# mount -a #可能某个挂载点有问题
Unable to find suitable address.
[root@mail ~]# mount #反正 mydata 己经挂载上去了
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
/dev/mapper/myvg-mydata2 on /mydata2 type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
/dev/mapper/myvg-mydata on /mydata type ext3 (rw)
[root@mail ~]#
在nfs服务器上 (192.168.0.75)
[root@mail ~]# mkdir /mydata/data #创建目录
[root@mail ~]# chown -R mysql:mysql /mydata/data #给属主属组
[root@mail ~]#
[root@mail ~]# ll -d /mydata/data #验证一下
drwxr-xr-x 2 mysql mysql 4096 12-03 15:42 /mydata/data
[root@mail ~]#
[root@mail ~]# vim /etc/exports #nfs导出去
/shared 192.168.1.0/24(rw,all_squash,anonuid=510,anongid=510)
#/var/ftp 192.168.1.0/24(ro)
/web/htdocs 192.168.0.0/24(ro)
/mydata 192.168.0.0/24(rw) # 或者仅这两个吧 192.168.0.45(rw) 192.168.0.45(rw)
[root@mail ~]# exportfs -arv #重新导出,不用重启,重新读取配置文件进行重新导出,这里不使用 service nfs reload,而是使用 exportfs
exporting 192.168.0.0/24:/web/htdocs
exporting 192.168.1.0/24:/shared
exporting 192.168.0.0/24:/mydata
[root@mail ~]#
先把下图的所有的高可用集群的资源全部删除吧
在第一个节点 192.168.0.45 上 执行
停止高可用服务
[root@node1 ~]# ssh node2 'service heartbeat stop' #node2 是第二个节点 192.168.0.55 最好先停掉它
Stopping High-Availability services:
[确定]
[root@node1 ~]# service heartbeat stop
Stopping High-Availability services:
[确定]
[root@node1 ~]#
在第一个节点 192.168.0.45 上 执行
增加与mysql相关的用户,用户组
[root@node1 ~]# groupadd -g 3306 mysql
groupadd:mysql 组已存在
[root@node1 ~]# useradd -g 3306 -u 3306 -s /sbin/nologin -M mysql
useradd:未知的组 3306
[root@node1 ~]#
[root@node1 ~]# id mysql
uid=306(mysql) gid=306(mysql) groups=306(mysql) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[root@node1 ~]#
[root@node1 ~]# mkdir /mydata
mkdir: 无法创建目录 “/mydata”: 文件已存在
[root@node1 ~]#
[root@node1 ~]# ls -la /mydata
总计 24
drwxr-xr-x 3 root root 4096 2019-07-12 .
drwxr-xr-x 31 root root 4096 12-03 09:30 ..
drwxr-xr-x 2 mysql mysql 4096 10-24 18:08 data
[root@node1 ~]# rm -Rf /mydata/data/* #删除原来的东西
[root@node1 ~]#
[root@node1 ~]# mount 192.168.0.75:/mydata /mydata
[root@node1 ~]#
[root@node1 ~]# ls /mydata
data lost+found
[root@node1 ~]#
[root@node1 ~]# ls -l /mydata
总计 24
drwxr-xr-x 2 mysql mysql 4096 12-03 15:42 data #属主属组也映射成本地mysql用户了
drwx------ 2 root root 16384 12-03 15:14 lost+found
[root@node1 ~]#
[root@node1 ~]# su - mysql #不能su 马哥那边是因为 -s /sbin/nologin 就不让你登录了,但我这边没能创建mysql用户,但我这边mysql是系统用户,所以也不能登录
su: warning: cannot change directory to /home/mysql: 没有那个文件或目录
su: /sbin/login: 没有那个文件或目录
[root@node1 ~]#
我在三个节点 (nfs 192.167.0.75)(第一个节点 192.168.0.45)(第二个节点 192.168.0.55)上,卸载原来的mysql程序,删除原来的mysql用户
在第一个节点 192.168.0.45 上 执行
[root@node1 init.d]# usermod -s /bin/bash mysql #让mysql的shell 是 /bin/bash
[root@node1 init.d]#
[root@node1 init.d]# su - mysql
su: warning: cannot change directory to /home/mysql: 没有那个文件或目录
-bash-3.2$ cd /mydata
-bash-3.2$ cd data
-bash-3.2$ pwd
/mydata/data
-bash-3.2$ touch a
-bash-3.2$ ls #可以写的
a
-bash-3.2$ rm a
-bash-3.2$
-bash-3.2$ exit;
logout
[root@node1 init.d]#
[root@node1 init.d]# usermod -s /sbin/nologin mysql # 把 shell 还改回 /sbin/nologin
[root@node1 init.d]#
[root@node1 init.d]# umount /mydata #卸载
[root@node1 init.d]#
在第二个节点 192.168.0.55 上 执行
增加与mysql相关的用户,用户组
[root@node2 ~]# groupadd -g 3306 mysql #增加一个普通组
[root@node2 ~]# useradd -g 3306 -u 3306 -M mysql
[root@node2 ~]#
[root@node2 ~]# mkdir /mydata
[root@node2 ~]#
[root@node2 ~]# mount -t nfs 192.168.0.75:/mydata /mydata
[root@node2 ~]#
[root@node2 ~]# su - mysql #切换用户
su: warning: cannot change directory to /home/mysql: 没有那个文件或目录
-bash-3.2$ cd /mydata/data
-bash-3.2$ touch he #建一文件,没有问题
-bash-3.2$ rm he
-bash-3.2$ exit
logout
[root@node2 ~]# usermod -s /sbin/nologin mysql # 把 shell 改回 /sbin/nologin ;
[root@node2 ~]# umount /mydata #卸载 nfs 这里挂载的 ( mount -t nfs 192.168.0.75:/mydata /mydata )
[root@node2 ~]#
马哥说这里最好不要用yum来安装,因为yum安装后什么都是定好的,比如配置文件,比如数据目录,改起来麻烦
在第一个节点 192.168.0.45 上 执行
[root@node1 ~]# tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local # 解压到 /usr/local 目录下 (-C是change to directory)
在第一个节点 192.168.0.45 上 执行
[root@node1 ~]# mount -t nfs 192.168.0.75:/mydata /mydata #挂载 /mydata
[root@node1 ~]# cd /usr/local/
[root@node1 local]#
[root@node1 local]# ls
apache bin etc lib mysql sbin
apr courier-authlib games libexec mysql-5.5.28-linux2.6-i686 share
apr-util doc include man php src
[root@node1 local]# pwd
/usr/local
[root@node1 local]# ln -sv mysql-5.5.28-linux2.6-i686 mysql
创建指向“mysql-5.5.28-linux2.6-i686”的符号链接“mysql”
[root@node1 local]#
[root@node1 local]# pwd #改属主属组
/usr/local
[root@node1 local]# cd mysql
[root@node1 mysql]# chown -R root:mysql ./* #为什么不是mysql:mysql,是root:mysql,是因为集群的权限,是这样子吗??因为root权限较大,????
[root@node1 mysql]#
[root@node1 mysql]# ll
总计 132
drwxr-xr-x 2 root mysql 4096 12-06 10:51 bin
-rw-r--r-- 1 root mysql 17987 2012-08-29 COPYING
drwxr-xr-x 4 root mysql 4096 12-06 10:51 data
drwxr-xr-x 2 root mysql 4096 12-06 10:51 docs
drwxr-xr-x 3 root mysql 4096 12-06 10:51 include
-rw-r--r-- 1 root mysql 7604 2012-08-29 INSTALL-BINARY
drwxr-xr-x 3 root mysql 4096 12-06 10:51 lib
drwxr-xr-x 4 root mysql 4096 12-06 10:51 man
drwxr-xr-x 10 root mysql 4096 12-06 10:51 mysql-test
-rw-r--r-- 1 root mysql 2552 2012-08-29 README
drwxr-xr-x 2 root mysql 4096 12-06 10:51 scripts
drwxr-xr-x 27 root mysql 4096 12-06 10:51 share
drwxr-xr-x 4 root mysql 4096 12-06 10:51 sql-bench
drwxr-xr-x 2 root mysql 4096 12-06 10:51 support-files
[root@node1 mysql]#
[root@node1 mysql]# pwd
/usr/local/mysql
[root@node1 mysql]#
[root@node1 mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ #虽然初始化之后,所有的修改权限都是mysql用户进行的,但是此时是以管理员的身份在执行,管理员访问nfs时都转换成 nobody了,,(使用sample时?,可能更为简便,使用iscsi时,可能此处更方便一点,因为在块级别输出的,???只要在iscsi上,输出的时候,挂载至本地以后,或者被识别成本地设备以后,管理员一定是有编辑的访问权限的) (在 nfs服务器上 使用no_root_squash )
chown: 正在更改 “/mydata/data/” 的所有者: 不允许的操作
Cannot change ownership of the database directories to the 'mysql'
user. Check that you have the necessary permissions and try again.
[root@node1 mysql]#
到nfs服务器上 (192.168.0.75)
[root@mail ~]# vim /etc/exports #使用 no_root_squash
/shared 192.168.1.0/24(rw,all_squash,anonuid=510,anongid=510)
#/var/ftp 192.168.1.0/24(ro)
/web/htdocs 192.168.0.0/24(ro)
/mydata 192.168.0.0/24(no_root_squash,rw) # 192.168.0.45(rw) 192.168.0.45(rw)
[root@mail ~]# exportfs -arv #重新导出一下
exporting 192.168.0.0/24:/web/htdocs
exporting 192.168.1.0/24:/shared
exporting 192.168.0.0/24:/mydata
[root@mail ~]#
在第一个节点 192.168.0.45 上 执行
[root@node1 mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ #可以了,初始化成功了
Installing MySQL system tables...
OK
Filling help tables...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
./bin/mysqladmin -u root password 'new-password'
./bin/mysqladmin -u root -h node1.magedu.com password 'new-password'
Alternatively you can run:
./bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
cd . ; ./bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd ./mysql-test ; perl mysql-test-run.pl
Please report any problems with the ./bin/mysqlbug script!
[root@node1 mysql]#
[root@node1 mysql]# ls -la /mydata/data
总计 36
drwxr-xr-x 5 mysql mysql 4096 12-06 13:34 .
drwxr-xr-x 4 root root 4096 12-03 15:42 ..
drwx------ 2 mysql root 4096 12-06 13:34 mysql
drwx------ 2 mysql mysql 4096 12-06 13:34 performance_schema
drwx------ 2 mysql root 4096 12-06 13:34 test
[root@node1 mysql]#
在第一个节点 192.168.0.45 上 执行
[root@node1 mysql]# cp support-files/my-large.cnf /etc/my.cnf #复制配置文件样例
[root@node1 mysql]# vim /etc/my.cnf
[mysqld]
..........
datadir = /mydata/data #数据文件目录
innodb_file_per_table = 1 #innodb 每表一个表空间文件,因为mysql此版本默认存储引擎是innodb
..........
#复制服务脚本
[root@node1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld #提制服务脚本
cp:是否覆盖“/etc/init.d/mysqld”? y
[root@node1 mysql]#
[root@node1 mysql]# chkconfig --add mysqld #加不加入服务列表其实都无所谓
[root@node1 mysql]#
[root@node1 mysql]# chkconfig --list mysqld
mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@node1 mysql]# chkconfig mysqld off #千万不能开机自启动
[root@node1 mysql]# chkconfig --list mysqld
mysqld 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
[root@node1 mysql]#
[root@node1 mysql]# service mysqld start #手动启动一下
Starting MySQL.... [确定]
[root@node1 mysql]#
[root@node1 mysql]# ls -ls /root/.my.cnf
8 -rw-r--r-- 1 root root 54 09-15 14:56 /root/.my.cnf
[root@node1 mysql]# mv /root/.my.cnf /root/.my.cnf-bak #把密码文件改下名(这个密码文件是以前的遗留)
[root@node1 mysql]# /usr/local/mysql/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.28-log MySQL Community Server (GPL)
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.01 sec)
mysql>
mysql> create database mydb;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql>
mysql> exit
Bye
[root@node1 mysql]#
[root@node1 mysql]# service mysqld stop
Shutting down MySQL. [确定]
[root@node1 mysql]#
到nfs服务器上 (192.168.0.75) 删掉 no_root_squash 看看服务器能不能启动
[root@mail ~]# vim /etc/exports #删掉 no_root_squash
/shared 192.168.1.0/24(rw,all_squash,anonuid=510,anongid=510)
#/var/ftp 192.168.1.0/24(ro)
/web/htdocs 192.168.0.0/24(ro)
/mydata 192.168.0.0/24(rw) # 192.168.0.45(rw) 192.168.0.45(rw)
[root@mail ~]# exportfs -arv #重新导出一下
exporting 192.168.0.0/24:/web/htdocs
exporting 192.168.1.0/24:/shared
exporting 192.168.0.0/24:/mydata
[root@mail ~]#
在第一个节点 192.168.0.45 上 执行
[root@node1 mysql]# service mysqld start #还是不能启动 mysql (管理员还得更新里面的日志文件? 不懂?)(反正我理解的没有no_root_squash这个东西,就是来宾帐号,就不能把pid(进程id)写入PID文件 ),所以必须要使用no_root_squash
Starting MySQL.The server quit without updating PID file (/mydata/data/node1.magedu.com.pid). [失败]
[root@node1 mysql]#
到nfs服务器上 (192.168.0.75)
[root@mail ~]# vim /etc/exports #加上 no_root_squash 后,风险很大,,所以最好是 指定单个ip,,,最好iptables规则也要注意一下,设置防火墙,只需要对 portmap 110端口的限制加上就可以了,就让别人访问不到 nfs 服务器了
/shared 192.168.1.0/24(rw,all_squash,anonuid=510,anongid=510)
#/var/ftp 192.168.1.0/24(ro)
/web/htdocs 192.168.0.0/24(ro)
/mydata 192.168.0.0/24(no_root_squash,rw) # 192.168.0.45(rw) 192.168.0.45(rw)
[root@mail ~]# exportfs -arv #重新导出一下
exporting 192.168.0.0/24:/web/htdocs
exporting 192.168.1.0/24:/shared
exporting 192.168.0.0/24:/mydata
[root@mail ~]#
在第一个节点 192.168.0.45 上 执行
[root@node1 mysql]# service mysqld start #可以启动了
Starting MySQL.. [确定]
[root@node1 mysql]#
[root@node1 mysql]# service mysqld stop #停掉
Shutting down MySQL. [确定]
[root@node1 mysql]#
[root@node1 mysql]# chkconfig --list mysqld #确定没有开机自动启动 自启动
mysqld 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
[root@node1 mysql]#
[root@node1 mysql]# umount /mydata #卸载 nfs 文件系统,在客户端不需要自动挂载 nfs 的,因为nfs作为一个集群资源来挂载的
[root@node1 mysql]#
在第二个节点 192.168.0.55 上 同样执行以上的动作 (就不写代码了)
(
a)安装mysql
b)从 第一个节点 192.168.0.45 上 scp /etc/my.cnf 和 scp /etc/init.d/mysqld 复制过来
c) 不用 scripts/mysql_install_db 初始化了,因为在 第一个节点 192.168.0.45 上 己经初始化过了
)
在第二个节点 192.168.0.55 上
[root@node2 mysql]# chkconfig --add mysqld #加进服务
[root@node2 mysql]# chkconfig mysqld off #不让开机自启动
[root@node2 mysql]#
在第二个节点 192.168.0.55 上
[root@node2 mysql]# mount -t nfs 192.168.0.75:/mydata /mydata
[root@node2 mysql]# ls /mydata
data lost+found
[root@node2 mysql]# ls /mydata/data
ibdata1 mydb mysql-bin.000002 performance_schema
ib_logfile0 mysql mysql-bin.index test
ib_logfile1 mysql-bin.000001 node1.magedu.com.err
[root@node2 mysql]# ls -la /mydata/data
总计 28808
drwxr-xr-x 6 mysql mysql 4096 12-06 14:07 .
drwxr-xr-x 4 root root 4096 12-03 15:42 ..
-rw-rw---- 1 mysql mysql 18874368 12-06 14:07 ibdata1
-rw-rw---- 1 mysql mysql 5242880 12-06 14:07 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 12-06 13:46 ib_logfile1
drwx------ 2 mysql mysql 4096 12-06 13:55 mydb
drwx------ 2 mysql root 4096 12-06 13:34 mysql
-rw-rw---- 1 mysql mysql 209 12-06 13:56 mysql-bin.000001
-rw-rw---- 1 mysql mysql 126 12-06 14:07 mysql-bin.000002
-rw-rw---- 1 mysql mysql 38 12-06 14:07 mysql-bin.index
-rw-rw---- 1 mysql root 3860 12-06 14:07 node1.magedu.com.err
drwx------ 2 mysql mysql 4096 12-06 13:34 performance_schema
drwx------ 2 mysql root 4096 12-06 13:34 test
[root@node2 mysql]#
在第二个节点 192.168.0.55 上
[root@node2 mysql]# service mysqld start #己经启动了mysql
Starting MySQL.. [确定]
[root@node2 mysql]#
[root@node2 mysql]# mv /root/.my.cnf /root/.my.cnf-bak #隐藏的密码文件改下名(这是以前的版本遗留)
[root@node2 mysql]#
[root@node2 mysql]# /usr/local/mysql/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.28-log MySQL Community Server (GPL)
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql>
mysql> exit;
Bye
[root@node2 mysql]#
[root@node2 mysql]# service mysqld stop #停止 mysql 服务
Shutting down MySQL. [确定]
[root@node2 mysql]# umount /mydata #卸载 /mydata
[root@node2 mysql]#
在第一个节点 192.168.0.45 上 执行
重启两个节点的集群
[root@node1 mysql]# service heartbeat restart
Stopping High-Availability services:
[确定]
Waiting to allow resource takeover to complete:
[确定]
Starting High-Availability services:
2020/12/06_15:15:46 INFO: Resource is stopped
[确定]
[root@node1 mysql]#
[root@node1 mysql]# ssh node2 'service heartbeat restart'
Stopping High-Availability services:
[确定]
Waiting to allow resource takeover to complete:
[确定]
Starting High-Availability services:
2020/12/06_15:16:26 INFO: Resource is stopped
[确定]
[root@node1 mysql]#
[root@node1 mysql]# crm_mon #下面两个节点都上线了, node1是DC
Refresh in 14s...
============
Last updated: Sun Dec 6 15:17:02 2020
Current DC: node1.magedu.com (9d79885a-9277-4672-9da6-914b79278104)
2 Nodes configured.
0 Resources configured.
============
Node: node1.magedu.com (9d79885a-9277-4672-9da6-914b79278104): online
Node: node2.magedu.com (9c0242c7-8660-450b-a1dc-63eb26ef1636): online
如上图,马哥的两个节点还没上线
他的解决思路 看日志
马哥 没发觉到什么错,什么事也没做,再执行一遍,就发觉到都上线了,如下图
我在node1 (这是我的DC) 上 通过 xshell的 # hb_gui & 打开gui界出
配置 mysql集群思路 下面三个启动顺序就是 1) 2) 3)
1) ip 地址 vip
2) filesystem
3) mysqld服务
两种方式 加入集群资源
组 和 约束
我们使用组的方式吧,这个简单点
配置 vip (mysqlip)
添加文件系统资源
添加 mysql服务资源
选 lsb 格式的吧,没有参数,简单点,记住 反正在每个节点上要用服务脚本 /etc/init.d/mysqld
现在它们的配置文件没有共用
启动组看看
由下图,已经启动了
由上图mysql在第一个节点上运行
在第一个节点 192.168.0.45 上
[root@node1 mysql]# /usr/local/mysql/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.28-log MySQL Community Server (GPL)
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> grant all privileges on *.* to 'root'@'%' identified by 'redhat';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
在另一台电脑上如 192.168.0.75 (就用这个nfs服务器吧)上,安装mysql
[root@mail yum.repos.d]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@mail yum.repos.d]#
[root@mail yum.repos.d]# yum install mysql
[root@mail yum.repos.d]# cd
[root@mail ~]#
[root@mail ~]# mysql -uroot -p -h 192.168.0.50 #可以连上 192.168.0.50 是vip
Enter password: (密码 redhat)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.28-log MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql>
mysql> use mydb;
Database changed
mysql> create table testtb1 (id int unsigned not null auto_increment primary key, name char(20));
Query OK, 0 rows affected (0.06 sec)
mysql>
mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| testtb1 |
+----------------+
1 row in set (0.00 sec)
mysql>
mysql> \q
Bye
[root@mail ~]#
把 第一个节点 192.168.0.45 转为备节点
由下图 三个资源在第二个节点 192.168.0.55 上运行了
另一台电脑上如 192.168.0.75 (就用这个nfs服务器吧) 重新使用mysql登录
[root@mail ~]# mysql -u root -p -h 192.168.0.50
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.28-log MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.01 sec)
mysql>
mysql> use mydb;
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_mydb |
+----------------+
| testtb1 |
+----------------+
1 row in set (0.00 sec)
mysql>
mysql> desc testtb1; #这是在上一次创建的表
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | char(20) | YES | | NULL | |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql>
mysql高可用了,nfs服务器,只有一个,会成为单点故障的,.所以nfs服务器要做高可用的,即NAS设备要做高可用的,,,
NAS主机也要做共享存储才能高可用?还再使用另外一个nfs??应该使用iscsi,既然有了scsi,那就不需要nfs了,因为直接向同一处输出
就可以了
iscsi 设备本身也应该高可用,
nfs作为共享存储并不是理想,因为还要对nfs文件对高可用,那么四台主机运行一个mysql的高可用,太可惜
drbd 分布式复制块设备 两个节点在共享存储级别也提供了类似于高可用能力,这就是drbd
主机级别的raid
磁盘 分区作块级别镜像
默认情况下,只能让一个节点能够挂载使用,主节点 挂载,读,写
备节点不能挂载,不能读,不能写
(因为假如两个节点同时挂上,同时写数据,,左往右写,右往左写,数据会崩溃的
所以像同一个设备一样,不允许两个设备同时挂载的)
dual master: 双主模型,双主模式下,两个节点都能同时挂载,同时读写,前提是得使用集群文件系统(ocfs2 或 gfs2)
(gfs:global filesystem 全局文件系统)
在一个节点的 mysql运行写入的数据,会自动通过网络内核层,将数据发给另外一个节点一份,连存放的位置都是一模一样的
一旦左节点故障,mysql服务在右节点启动,ip地址转移到右节点,直接访问本地的镜像磁盘分区
左节点什么都挂掉,右节点照样能够运行