天天看點

corosync+pacemaker實作高可用的MariaDB

一、準備工作

二、MariaDB server配置(基于nfs)

nfs server準備

<code>1、在nfs server準備LVM存儲空間</code>

<code>[root@node3 ~]</code><code># fdisk /dev/sdb</code>

<code>Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel</code>

<code>Building a new DOS disklabel with disk identifier 0x61284c6a.</code>

<code>Changes will remain </code><code>in</code> <code>memory only, </code><code>until</code> <code>you decide to write them.</code>

<code>After that, of course, the previous content won't be recoverable.</code>

<code> </code> 

<code>Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)</code>

<code>WARNING: DOS-compatible mode is deprecated. It's strongly recommended to</code>

<code>         </code><code>switch off the mode (</code><code>command</code> <code>'c'</code><code>) and change display </code><code>units</code> <code>to</code>

<code>         </code><code>sectors (</code><code>command</code> <code>'u'</code><code>).</code>

<code>Command (m </code><code>for</code> <code>help): n</code>

<code>Command action</code>

<code>   </code><code>e   extended</code>

<code>   </code><code>p   primary partition (1-4)</code>

<code>p</code>

<code>Partition number (1-4): 3</code>

<code>First cylinder (1-1305, default 1): </code>

<code>Using default value 1</code>

<code>Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +10G</code>

<code>Value out of range.</code>

<code>Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +5G </code>

<code>Command (m </code><code>for</code> <code>help): t</code>

<code>Selected partition 3</code>

<code>Hex code (</code><code>type</code> <code>L to list codes): 8e</code>

<code>Changed system </code><code>type</code> <code>of partition 3 to 8e (Linux LVM)</code>

<code>Command (m </code><code>for</code> <code>help): w</code>

<code>The partition table has been altered!</code>

<code>Calling ioctl() to re-</code><code>read</code> <code>partition table.</code>

<code>Syncing disks.</code>

<code>[root@node3 ~]</code><code># partx -a /dev/sdb</code>

<code>[root@node3 ~]</code><code># pvcreate /dev/sdb3</code>

<code>  </code><code>Physical volume </code><code>"/dev/sdb3"</code> <code>successfully created</code>

<code>[root@node3 ~]</code><code># vgcreate myvg /dev/sdb3</code>

<code>  </code><code>Volume group </code><code>"myvg"</code> <code>successfully created</code>

<code>[root@node3 ~]</code><code># lvcreate -L 5G -n mydata myvg</code>

<code>  </code><code>Logical volume </code><code>"mydata"</code> <code>created.</code>

<code>[root@node3 ~]</code><code># mke2fs -t ext4 /dev/myvg/mydata</code>

<code>mke2fs 1.41.12 (17-May-2010)</code>

<code>Filesystem label=</code>

<code>OS </code><code>type</code><code>: Linux</code>

<code>Block size=4096 (log=2)</code>

<code>Fragment size=4096 (log=2)</code>

<code>Stride=0 blocks, Stripe width=0 blocks</code>

<code>327680 inodes, 1310720 blocks</code>

<code>65536 blocks (5.00%) reserved </code><code>for</code> <code>the super user</code>

<code>First data block=0</code>

<code>Maximum filesystem blocks=1342177280</code>

<code>40 block </code><code>groups</code>

<code>32768 blocks per group, 32768 fragments per group</code>

<code>8192 inodes per group</code>

<code>Superblock backups stored on blocks: </code>

<code>    </code><code>32768, 98304, 163840, 229376, 294912, 819200, 884736</code>

<code>Writing inode tables: </code><code>done</code>                            

<code>Creating journal (32768 blocks): </code><code>done</code>

<code>Writing superblocks and filesystem accounting information: </code><code>done</code>

<code>This filesystem will be automatically checked every 36 mounts or</code>

<code>180 days, whichever comes first.  Use tune2fs -c or -i to override.</code>

<code>2、開機自動挂載,并nfs導出</code>

<code>[root@node3 ~]</code><code># mkdir  /mydata</code>

<code>[root@node3 ~]</code><code># vim /etc/fstab </code>

<code>/dev/myvg/mydata</code>        <code>/mydata</code>                 <code>ext4    defaults        0 0</code>

<code>[root@node3 ~]</code><code># mount -a</code>

<code>[root@node3 ~]</code><code># mount | grep /mydata</code>

<code>/dev/mapper/myvg-mydata</code> <code>on </code><code>/mydata</code> <code>type</code> <code>ext4 (rw)</code>

<code>[root@node3 ~]</code><code># vim /etc/exports </code>

<code>/mydata</code>         <code>192.168.0.0</code><code>/24</code><code>(rw,no_root_squash)</code>

<code>#共享給192.168.0.0/24網段,可讀可寫,允許root使用者登入便于初始化,配置結束可取消root使用者登入</code>

<code>3、導出nfs共享目錄</code>

<code>#建立mysql使用者,指明uid,gid。各節點的mysql使用者uid,gid一緻。</code>

<code>[root@node3 ~]</code><code># groupadd -r -g 306 mysql</code>

<code>[root@node3 ~]</code><code># useradd -r -g 306 -u 306 mysql</code>

<code>#建立共享目錄,并修改屬主屬組。</code>

<code>[root@node3 ~]</code><code># mkdir /mydata/data</code>

<code>[root@node3 ~]</code><code># chown -R mysql.mysql /mydata/data</code>

<code>#導出nfs共享目錄</code>

<code>[root@node3 ~]</code><code># exportfs -arv</code>

<code>exporting 192.168.0.0</code><code>/24</code><code>:</code><code>/mydata</code>

<code>[root@node3 ~]</code><code># service nfs start</code>

三、各節點準備mysql

node1

<code>建立mysql使用者,uid和gid與nfs server的mysql使用者保持一緻</code>

<code>[root@node1 ~]</code><code># groupadd -r -g 306 mysql</code>

<code>[root@node1 ~]</code><code># useradd -r -g 306 -u 306 mysql</code>

<code>安裝mariadb</code>

<code>[root@node1 ~]</code><code># tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local/</code>

<code>[root@node1 ~]</code><code># cd /usr/local</code>

<code>[root@node1 </code><code>local</code><code>]</code><code># ln -sv mariadb-5.5.46-linux-x86_64 mysql</code>

<code>`mysql</code><code>' -&gt; `mariadb-5.5.46-linux-x86_64'</code>

<code>[root@node1 </code><code>local</code><code>]</code><code># cd mysql/</code>

<code>[root@node1 mysql]</code><code># chown -R root.mysql ./*</code>

<code>挂載nfs檔案系統</code>

<code>[root@node1 mysql]</code><code># mount -t nfs 192.168.0.20:/mydata /mydata</code>

<code>[root@node1 mysql]</code><code># mount | grep /mydata</code>

<code>192.168.0.20:</code><code>/mydata</code> <code>on </code><code>/mydata</code> <code>type</code> <code>nfs (rw,vers=4,addr=192.168.0.20,clientaddr=192.168.0.15)</code>

<code>初始化mysql至nfs,此步驟隻需一個節點操作即可,本文node1執行,那麼node2就不需要執行</code>

<code>初始化操作後,可以将nfs server的共享選項中的no_root_squash移除了</code>

<code>[root@node1 mysql]</code><code># ./scripts/mysql_install_db --datadir=/mydata/data/ --user=mysql</code>

<code>nfs server端檢視</code>

<code>[root@node3 ~]</code><code># cd /mydata/data</code>

<code>[root@node3 data]</code><code># ll</code>

<code>total 32</code>

<code>-rw-rw---- 1 mysql mysql 16384 Nov 21 20:32 aria_log.00000001</code>

<code>-rw-rw---- 1 mysql mysql    52 Nov 21 20:32 aria_log_control</code>

<code>drwx------ 2 mysql root   4096 Nov 21 20:32 mysql</code>

<code>drwx------ 2 mysql mysql  4096 Nov 21 20:32 performance_schema</code>

<code>drwx------ 2 mysql root   4096 Nov 21 20:32 </code><code>test</code>

<code>node1節點配置mysql</code>

<code>[root@node1 mysql]</code><code># mkdir /etc/mysql</code>

<code>[root@node1 mysql]</code><code># cp support-files/my-large.cnf /etc/mysql/my.cnf</code>

<code>[root@node1 mysql]</code><code># vim /etc/mysql/my.cnf</code>

<code>datadir = </code><code>/mydata/data</code>

<code>innodb_file_per_table = on</code>

<code>skip_name_resolve = on</code>

<code>為mysql提供服務腳本,并禁止其開機啟動</code>

<code>[root@node1 mysql]</code><code># cp support-files/mysql.server /etc/rc.d/init.d/mysqld</code>

<code>[root@node1 mysql]</code><code># chkconfig --add mysqld</code>

<code>[root@node1 mysql]</code><code># chkconfig mysqld off</code>

<code>啟動mysql,建立mydb資料庫</code>

<code>[root@node1 mysql]</code><code># service mysqld start</code>

<code>Starting MySQL..... SUCCESS!</code>

<code>[root@node1 mysql]</code><code># vim /root/.bashrc </code>

<code>PATH=</code><code>/usr/local/mysql/bin</code><code>:$PATH</code>

<code>export</code> <code>PATH</code>

<code>[root@node1 mysql]</code><code># source /root/.bashrc</code>

<code>[root@node1 mysql]</code><code># mysql</code>

<code>Welcome to the MariaDB monitor.  Commands end with ; or \g.</code>

<code>Your MariaDB connection </code><code>id</code> <code>is 2</code>

<code>Server version: 5.5.46-MariaDB-log MariaDB Server</code>

<code>Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.</code>

<code>Type </code><code>'help;'</code> <code>or </code><code>'\h'</code> <code>for</code> <code>help. Type </code><code>'\c'</code> <code>to </code><code>clear</code> <code>the current input statement.</code>

<code>MariaDB [(none)]&gt; create database mydb;</code>

<code>Query OK, 1 row affected (0.16 sec)</code>

<code>MariaDB [(none)]&gt; flush privileges;</code>

<code>Query OK, 0 rows affected (0.03 sec)</code>

<code>MariaDB [(none)]&gt; </code><code>exit</code>

<code>Bye</code>

<code>[root@node1 mysql]</code><code># service mysqld stop</code>

<code>Shutting down MySQL.. SUCCESS! </code>

<code>解除安裝共享目錄</code>

<code>[root@node1 mysql]</code><code># umount /mydata</code>

node2

<code>[root@node2 ~]</code><code># groupadd -r -g 306 mysql</code>

<code>[root@node2 ~]</code><code># useradd -r -g 306 -u 306 mysql</code>

<code>[root@node2 ~]</code><code># tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local</code>

<code>[root@node2 ~]</code><code># cd /usr/local/</code>

<code>[root@node2 </code><code>local</code><code>]</code><code># ln -sv mariadb-5.5.46-linux-x86_64 mysql</code>

<code>[root@node2 </code><code>local</code><code>]</code><code># cd mysql/</code>

<code>[root@node2 mysql]</code><code># chown  root.mysql ./*</code>

<code>将node1的配置檔案複制給node2</code>

<code>[root@node2 mysql]</code><code># mkdir /etc/mysql/</code>

<code>[root@node1 mysql]</code><code># scp /etc/mysql/my.cnf node2:/etc/mysql/</code>

<code>為node2節點準備服務腳本,并禁止開機啟動</code>

<code>[root@node2 mysql]</code><code># cp support-files/mysql.server /etc/rc.d/init.d/mysqld</code>

<code>[root@node2 mysql]</code><code># chkconfig --add mysqld</code>

<code>[root@node2 mysql]</code><code># chkconfig mysqld off</code>

<code>挂在共享檔案系統,啟動mysql</code>

<code>[root@node2 mysql]</code><code># mkdir /mydata</code>

<code>[root@node2 mysql]</code><code># mount -t nfs 192.168.0.20:/mydata /mydata</code>

<code>[root@node2 mysql]</code><code># service mysqld start</code>

<code>Starting MySQL.. SUCCESS! </code>

<code>[root@node2 mysql]</code><code># vim /root/.bashrc </code>

<code>[root@node2 mysql]</code><code># source /root/.bashrc</code>

<code>MariaDB [(none)]&gt; show databases;</code>

<code>+--------------------+</code>

<code>| Database           |</code>

<code>| information_schema |</code>

<code>| mydb               |</code>

<code>| mysql              |</code>

<code>| performance_schema |</code>

<code>| </code><code>test</code>               <code>|</code>

<code>5 rows </code><code>in</code> <code>set</code> <code>(0.02 sec)</code>

<code>授權遠端通路</code>

<code>MariaDB [(none)]&gt; grant all on *.* to </code><code>'root'</code><code>@</code><code>'192.168.%.%'</code> <code>identified by </code><code>'jymlinux'</code><code>;</code>

<code>Query OK, 0 rows affected (0.01 sec)</code>

<code>停止mysql,并解除安裝共享目錄</code>

<code>[root@node2 mysql]</code><code># service mysqld stop</code>

<code>[root@node2 mysql]</code><code># umount /mydata</code>

四、使用crmsh配置mariadb高可用

本文轉自 元嬰期 51CTO部落格,原文連結:http://blog.51cto.com/jiayimeng/1875183

繼續閱讀