Mariadb 10.3.12单机&集群部署(含phpmyadmin)学习笔记
2019年2月27日
9:46
目录
环境说明:. 2
一、单机部署. 2
1.1、查询系统是否自带mariadb,如果有就卸载掉. 2
1.2、配置离线yum源. 3
1.3、升级systemd-libs包. 4
1.4、安装mariadb 4
1.5启动mariadb 5
1.6、MariaDB简单配置. 6
1.7、MariaDB登陆. 7
1.8、开启错误日志. 7
二、图形管理界面phpmyadmin部署. 10
2.1、安装httpd、php和php-mysql软件. 10
2.2、解压软件包. 10
2.3、生成配置文件. 10
2.4、开启高级功能. 10
2.4.1、编辑配置文件. 10
2.4.2、根据页面提示执行脚本. 11
2.4.3、更新权限. 13
2.4.4、重启httpd服务. 15
三、集群安装. 17
3.1、必须配置的变量参数. 17
3.2、启动集群命令:. 19
3.3、其他节点加入集群. 20
3.4、查看集群状态. 20
四、注意事项. 21
环境说明:
官方站点:
https://mariadb.com/kb/zh-cn/
https://mariadb.org
官网学习链接:
https://mariadb.com/kb/en/library/getting-started-with-mariadb-galera-cluster/#installing-mariadb-galera-cluster
环境:VMware® Workstation 15 Pro
单机部署:CentOS7.1+Mariadb10.3.12+phpmyadmin4.0.10.20
说明:客户要求必须用CentOS7.1+Mariadb10.3.12的环境,CentOS 7.1上mariadb10.3.12的依赖包版本都需要升级,所以直接从CentOS7.6上提取了最新的包,并配置离线yum源。
如果直接在CentOS7.6上安装,则不需要做离线yum源,直接挂载系统镜像做yum源就可以了。mariadb和phpmyadmin可以从官网免费下载。
集群部署:三台CentOS7.1虚拟机+Mariadb10.3.12+phpmyadmin4.0.10.20
IP地址: | 111.111.111.20 | 111.111.111.201 | 111.111.111.202 |
主机名:
hostnamectl set-hostname mariadb01
hostnamectl set-hostname mariadb02
hostnamectl set-hostname mariadb03
关闭防火墙&selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@localhost ~]# setenforce 0
一、单机部署
1.1、查询系统是否自带mariadb,如果有就卸载掉
Rpm -qa查询到有一个5.5.41版本的包,直接卸载
1.2、配置离线yum源
将准备好的离线yum源包上传到服务器,并配置yum源
由于服务器采用最小化安装,所以还需要安装createrepo命令
[root@localhost mariadb-10.3.12_yum_centos_offline]# rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm
[root@localhost mariadb-10.3.12_yum_centos_offline]# rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm
[root@localhost mariadb-10.3.12_yum_centos_offline]# rpm -ivh libxml2-2.9.1-5.el7_0.1.x86_64.rpm
[root@localhost mariadb-10.3.12_yum_centos_offline]# rpm -ivh libxml2-python-2.9.1-5.el7_0.1.x86_64.rpm
[root@localhost mariadb-10.3.12_yum_centos_offline]# rpm -ivh createrepo-0.9.9-23.el7.noarch.rpm
创建本地yum源仓库
执行setup_repository之后会在/etc/yum.repos.d目录下生成一个mariadb.repo,但是还是需要我们自己配置一下,否则该目录下的其他repo文件会干扰yum离线源
1.3、升级systemd-libs包
由于centos7.1自带的systemd-libs-208-20.el7.x86_64版本过低不支持Mariadb10.3.12版本,我们需要升级
[root@localhost ~]# yum install systemd-libs -y
1.4、安装mariadb
前面已经完成yum配置,这里直接安装
[root@localhost yum.repos.d]# yum install mariadb-server -y
1.5启动mariadb
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# systemctl enable mariadb
[root@localhost ~]# systemctl status mariadb
1.6、MariaDB简单配置
[root@localhost ~]# mysql_secure_installation
先是设置密码,会提示先输入密码
Enter current password for root (enter for none): <–初次运行直接回车
设置密码
Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码
其他配置
Remove anonymous users? [Y/n] <– 是否删除匿名用户,Y,回车
Disallow root login remotely? [Y/n] <–是否禁止root远程登录,N,回车,
Remove test database and access to it? [Y/n] <– 是否删除test数据库,n,回车
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车
初始化MariaDB完成,接下来测试登录
1.7、MariaDB登陆
[root@localhost ~]# mysql -u root -p
默认安装路径:/var/lib/mysql
1.8、开启错误日志
mysql>show variables like '%log_err%'
可以看到没开启错误日志,我们可以选择开启,并指定路径,命令行修改会如下图报错,告诉我们是只读参数,那么只能修改server.cnf文件,然后重启数据库生效了。
重启数据库后参数生效:
二、图形管理界面phpmyadmin部署
2.1、安装httpd、php和php-mysql软件
[root@localhost ~]# yum install httpd php php-mysql -y
[root@localhost ~]# yum install php-mbstring -y
2.2、解压软件包
将下载好的软件解压到"/var/www/html"目录下
[root@localhost iso]# tar -zxvf phpMyAdmin-4.0.10.20-all-languages.tar.gz -C /var/www/html/
[root@localhost iso]# cd /var/www/html/
[root@localhost html]# mv phpMyAdmin-4.0.10.20-all-languages mariadb
这里把目录名称修改简单点,便于访问
2.3、生成配置文件
进入mariadb目录,将"config.sample.inc.php"文件复制为"config.inc.php"。
[root@localhost mariadb]# cp config.sample.inc.php config.inc.php
2.4、开启高级功能
2.4.1、编辑配置文件
将下图中 后的高级参数全部开启
2.4.2、根据页面提示执行脚本
快速设置高级功能:
· 通过 examples/create_tables.sql 创建必需的数据表。
· 创建一个用户并授予其访问上一步操作中创建的数据表的权限。
· 在配置文件 (config.inc.php) 中启用高级功能,参见 config.sample.inc.php 中的范例。
· 请重新登录 phpMyAdmin 以加载新配置并使其生效。
来自 <http://111.111.111.200/mariadb/server_privileges.php>
脚本默认在mariadb安装路径下的examples目录内
执行脚本
2.4.3、更新权限
执行完脚本后,我们会发现多了一个phpmyadmin数据库,我们需要更新root用户对phpmyadmin数据库的权限
点击编辑权限
进入编辑页面后,在下面红框内选择phpmyadmin数据库
确认是phpmyadmin数据库后,全选所有权限
全选后点击执行按钮
2.4.4、重启httpd服务
[root@localhost phpmyadmin]# systemctl restart httpd
访问管理页面,这里的root账户密码就是前面设置的Maridb的账户密码 --必须重新输入账户密码登陆一次页面才能开启高级功能!
三、集群安装
3.1、必须配置的变量参数
wsrep_provider -- wsrep库的位置,默认:/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address --集群IP配置,格式:"gcomm//:<node1 name or ip>,<node2 name or ip2>,<node3 name or ip>"
binlog_format=ROW --mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。对应的,binlog的格式也有三种:STATEMENT,ROW,MIXED
① STATEMENT模式(SBR)
每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)
② ROW模式(RBR)
不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是alter table的时候会让日志暴涨。
③ MIXED模式(MBR)
以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。
default_storage_engine=InnoDB --默认存储引擎。服务器启动时必须启用默认存储引擎,否则服务器将无法启动。
innodb_autoinc_lock_mode=2 --控制着在向有auto_increment 列的表插入数据时,相关锁的行为;所以在binlog_format不是statement的情况下最好是innodb_autoinc_lock_mode=2 这样可能知道更好的性能
innodb_doublewrite=1 -- This is the default value, but it should not be changed when using Galera provider version >= 2.0.
query_cache_size=0 -- Only mandatory for MariaDB versions prior to MariaDB Galera Cluster 5.5.40, MariaDB Galera Cluster 10.0.14, and MariaDB 10.1.2. 仅适用于MariaDB Galera Cluster 5.5.40,MariaDB Galera Cluster 10.0.14和MariaDB 10.1.2之前的MariaDB版本。
wsrep_on=ON -- Enable wsrep replication (starting 10.1.1)
下图为mariadb10.3.12版本的默认变量参数
想要启动集群,必须先修改这些参数,修改之前先备份一下配置文件
以下为修改后的配置参数
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://111.111.111.200,111.111.111.201,111.111.111.202"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
#
# Allow server to accept connections on all interfaces.
#
#bind-address=0.0.0.0
#
# Optional setting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0
# this is only for embedded server
--这里建议将数据库log_err日志开启,该参数属于只读参数,只能修改配置文件重启数据库生效, 所以在安装时就指定,以便于查看日志排错。在server.cnf文件中,[mysql]下加入该参数即可
log_error=/var/lib/mysql/mariadb01.err
3.2、启动集群命令:
mysqld --defaults-file=/etc/my.cnf.d/server.cnf --user=mysql --wsrep-new-cluster --wsrep-cluster-address="gcomm://"
systemctl start mariadb --wsrep-new-cluster --wsrep-cluster-address="gcomm//:111.111.111.200,111.111.111.201,111.111.111.202"
Systemd and Bootstrapping--官网命令:
On operating systems that use systemd, a node can be bootstrapped in the following way:
$ galera_new_cluster
本次测试使用的是galear_new_cluster命令启动的集群
3.3、其他节点加入集群
全部按照1节点的server.cnf文件配置,然后systemctl restart mariadb就可以了
3.4、查看集群状态
使用show status like 'wsrep_cluster_size'命令查看集群状态, value值为3,则证明集群有3个节点
四、注意事项
1、关闭 selinux!否则会无法连入集群;如果启用selinux,修改数据库目录后,启动数据库就会报innodb无法初始化。
2、关闭防火墙!或者自行开放相关端口
3、各个节点需用同一个版本的MariaDB,否则会出各种问题!
4、如果是已有数据库,包含了集群外的数据,千万不要作为后继节点连入集群,否则原有数据会被集群数据所清除!
5、本次测试旨在快速部署MariaDB,所有参数均未做调优,仅满足安装需求!实际生产环境需要自行摸索优化相关参数!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341