[TOC]
一、安装mysql
1、安装
系统环境:
Ubuntu 18.04 64位
MySQL 8.0.19
下载MySQL APT安装配置包
首先访问 https://dev.mysql.com/downloads/repo/apt/ 获取配置包下载地址
wget https://dev.mysql.com/get/mysql-apt-config_0.8.14-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.14-1_all.deb
sudo apt-get update
sudo apt-get install mysql-server -y
输入root密码0,也是数据库初始密码
选择身份验证方式、密码加密方式,这里默认的即可。回车 确定
安装完成。
运行后的pid和socket默认文件目录/run/mysqld/
日志文件:/var/log/mysql/error.log
2、启动,报错处理
2.1 启动
mysql -uroot -p0
2.2、报错 /tmp/mysql.sock
可以使用命令启动
mysql -uroot -p0 -S /run/mysqld/mysqld.sock=
或者修改配置加上socket项
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
#(跟这个socket路径一样)
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
3、初始化msql
mysqld --initialize-insecure #root密码置空
service mysql start
mysql -uroot -p
#如果无法使用use mysql;
alter user 'root'@'localhost' identified by 'xxx';
use mysql;
update user set host="%" where user='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
4、客户端工具连接报错
这是因为mysql8的加密方式和Navicat不一样
#修改编码方式
alter user root identified with mysql_native_password by 'xxx';
二、galera-mysql集群安装
资源下载与安装
https://galeracluster.com/downloads/
wsrep-api插件
http://releases.galeracluster.com/mysql-wsrep-8.0/ubuntu/pool/main/m/mysql-wsrep/?C=N;O=A
galera4
http://releases.galeracluster.com/galera-4/ubuntu/pool/main/g/galera-4/?C=N;O=A
1、安装对应依赖
所有节点执行
apt-get install python-software-properties -y && apt-get install software-properties-common -y
2、添加GunPG key
所有节点执行
apt-key adv --keyserver keyserver.ubuntu.com --recv BC19DDBA
3、配置Ubuntu下galera源
所有节点执行
创建galera.list文件:
touch /etc/apt/sources.list.d/galera.list
nano -w /etc/apt/sources.list.d/galera.list
在galera.list中添加内容:
#Codership Repository (Galera Cluster for MySQL)
deb http://releases.galeracluster.com/mysql-wsrep-8.0/ubuntu/ bionic main
deb http://releases.galeracluster.com/galera-4/ubuntu bionic main
链接中的“bionic”为你所用的ubuntu系统的版本号,如果不清楚自己的Ubuntu版本号,可通过命令lsb_release -a来查看。
保存退出:ctrl+x y 回车
4、继续配置源
所有节点执行
touch /etc/apt/preferences.d/galera.pref
nano /etc/apt/preferences.d/galera.pref
在galera.pref文件中添加内容:
Package: *
Pin: origin releases.galeracluster.com
Pin-Priority: 1001
5、更新源
所有节点执行
sudo apt-get update
6、安装mysql和Galera
一旦在所有服务器上更新了存储库,就可以在三台服务器上运行以下命令安装MySQL8.0的修补程序与Galera:
sudo apt-get install galera-4 galera-arbitrator-4 mysql-wsrep-8.0
7、集群配置
新建文件/etc/mysql/conf.d/galera.cnf,基本配置
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
#bind-address=0.0.0.0
server_id=2
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="my_cluster"
#把三个node的IP地址写入进去
wsrep_cluster_address="gcomm://192.168.2.12:4567,192.168.2.13:4567,192.168.2.14:4567"
#wsrep_cluster_address="gcomm://"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
wsrep_sst_auth=wsrep:sstpaas123
slow_query_log=on
# Galera Node Configuration
wsrep_node_address="192.168.2.13" #当前node的IP地址
wsrep_node_name="node02"
# 指定wsrep启动端口号,4567为默认值
wsrep_sst_donor='node04,node02,node03'
说明:
server_id集群每台服务器都不同
wsrep_cluster_address第一台主集群配置的时候="gcomm://",启动之后更改成全配置
wsrep_sst_method=rsync全量配置或增量配置
wsrep_node_address=本机ip
wsrep_node_name=本机hostname
wsrep_sst_donor=把本机hostname填到最后或者不填,否则有些情况下无法启动并加入到集群
8、启动集群
#启动集群第一个主
mysqld_bootstrap
启动其他
service mysql start
#查看集群状态
mysql -uroot -p'xxxxxxxxx' -e "SHOW STATUS LIKE 'wsrep_cluster%'"
#wsrep_cluster_size 结果代表集群有几个节点
#查看日志
tail -f /var/log/mysql/error.log
报错解决办法:
第一步:sudo apt-get remove apparmor -y
第二步:#打开文件/usr/share/mysql-8.0/mysql-systemd-start,将该文件的以下行注释掉。
sanity() {
#/lib/apparmor/profile-load usr.sbin.mysqld #这行注释掉
}
第三步:重启虚拟机 sudo reboot
第四步:执行service mysql start
9、重启集群
注意:关闭Mysql自启动,如果所有服务器全部reboot,重启集群的时候,会不知道哪台服务器的seqno最大,重启集群,需要从最大的seqno开始,否则数据会被还原。
cat /var/lib/mysql/grastate.dat;查看seqno
cat /var/lib/mysql/grastate.dat
#选择主节点,执行:
sed -i 's/safe_to_bootstrap: 0/safe_to_bootstrap: 1/g' /var/lib/mysql/grastate.dat
#重启3种情况
#第一种情况:第一次启动,配置wsrep_cluster_address="gcomm://",重启好之后改成全部
service mysql start --wsrep-new-cluster (第一次启动一定要使用--wsrep-new-cluster,再次启动就不需要)
#第二种情况:没有全部停机的情况下,wsrep_cluster_address="gcomm://192.168.2.12:4567,192.168.2.13:4567,192.168.2.14:4567"
service mysql start
#第三种情况:全部停机了,wsrep_cluster_address="gcomm://192.168.2.12:4567,192.168.2.13:4567,192.168.2.14:4567" 不想改配置就用这种
mysqld --wsrep-new-cluster --wsrep-cluster-address='gcomm://' &
#service mysql start --wsrep-new-cluster --wsrep-cluster-address='gcomm://' #这句不生效,只能用上面的
#再启动集群其他节点
service mysql start
注意:如果无法启动其他节点
#删除所有节点的两个缓存文件及/var/lock/subsys 目录下的mysql 文件,然后重新启动:
rm -rf /var/lock/subsys/mysql
rm -rf /var/lib/mysql/galera.cache
rm -rf /var/lib/mysql/grastate.dat
#如果还是无效,删除wsrep_sst_donor配置,或者把自己写到最后,或者自己不写
#wsrep_sst_donor="node04,node01,node03,node02"
完成。
网友评论