一. 二进制方式安装Mysql:
1. 创建mysql用户:
[root@node2 ~]# groupadd -r -g 306 mysql
[root@node2 ~]# useradd mysql -g 306 -u 306 -r
2. 解压mysql压缩包:
[root@node2 ~]# tar xf mysql-5.7.14-linux-glibc2.5-x86_64.tar
[root@node2 ~]# tar -xf mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
[root@node2 ~]# ln -sv /usr/local/mysql-5.7.14-linux-glibc2.5-x86_64/
/usr/local/mysql
##添加环境变量:
[root@node2 ~]# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
##重新加载环境变量:
[root@node2 ~]# source /etc/profile.d/mysql.sh
3. 修改mysql目录的属主,数组:
[root@node2 ~]# chown -R mysql:mysql /usr/local/mysql/*
4. 初始化数据库:初始化数据库会得到数据库的起始密码。
[root@node2 ~]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data
5. 修改数据库配置文件:
[root@node2 ~]# \cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
##"\"表示强制覆盖原有文件,不用用户确认
[root@node2 ~]# vim /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
##复制mysql的服务文件,改名为mysqld
[root@node2 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
##将mysql设为系统服务
[root@node2 ~]# chkconfig --add mysqld
##设置mysql开机自启
[root@node2 ~]# chkconfig mysqld on
##启动msyql服务
[root@node2 ~]# systemctl start mysqld
6>. 登录msyql:
##先使用起始密码登录mysql
[root@node2 ~]# mysql -uroot -p'f&SZJRq4I)Y/'
mysql> alter user root@localhost identified by '123456'; ##修改数据库密码
mysql> \q
##如果起始密码无法登录mysql,则可以使用暴力破解法:
1. 修改mysql配置文件:
[root@node2 ~]# vim /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
skip-grant-tables ##登录时不使用密码登录
2. 重启mysql服务:
[root@node2 ~]# systemctl restart mysqld.service
3. 登录数据库:
[root@node2 ~]# mysql
mysql> flush privileges; ##刷新权限表
mysql> alter user root@localhost identified by '123456'; ##修改数据库密码
4. 删除配置文件中"skip-grant-tables"参数
5. 重启mysql服务
二. 配置mysql主从同步(一主两从):
1>. 环境规划:
主机名 | 主机地址 | 角色 |
node2 | 192.168.188.12 | master |
node3 | 192.168.188.13 | slave1 |
node4 | 192.168.188.14 | slave2 |
2>. 所有节点设置域名解析:
[root@node2 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.188.11 node1
192.168.188.12 node2
192.168.188.13 node3
192.168.188.14 node4
3>. 修改mysql master配置文件:
[root@node2 ~]# vim /etc/my.cnf
[client]
port=3306
[mysql]
prompt="(\\u@\\h) [\d] >\\ "
no_auto_rehash
[mysqld]
user=mysql
port=3306
server_id=1 ##各节点的id必须唯一
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
character_set_server=utf8mb4
skip_name_resolve ##关闭名称解析
gtid-mode=on ##启动gtid类型
enforce-gtid-consistency=true ##强制gtid的一致性
log-slave-updates=1 ##slave更新是否记录日志
log-bin=mysql-bin ##开启二进制日志
relay-log=relay-log ##开启中继日志
log_error=/usr/local/mysql/logs/error.log
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
4>. 修改mysql slave配置文件:
[client]
port=3306
[mysql]
prompt="(\\u@\\h) [\d] >\\ "
no_auto_rehash
[mysqld]
user=mysql
port=3306
server_id=2 ##各节点的id必须唯一
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
character_set_server=utf8mb4
skip_name_resolve ##关闭名称解析
gtid-mode=on ##启动gtid类型
enforce-gtid-consistency=true ##强制gtid的一致性
log-slave-updates=1 ##slave更新是否记录日志
log-bin=mysql-bin ##开启二进制日志
relay-log=relay-log ##开启中继日志
read_only=on ##从节点开启只读
relay_log_purge=0 ##是否自动清空不需要的中继日志
log_error=/usr/local/mysql/logs/error.log
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
5>. 重启集群个节点的mysql服务:
[root@node2 ~]# systemctl restart mysqld.service
6>. 登录主库:
[root@node2 ~]# mysql -uroot -p'123456'
##授权一个用户slave
(root@localhost) [(none)] >grant replication slave,replication client on *.*
to 'slave'@'192.168.188.%' identified by '123456';
##查看主库状态:
(root@localhost) [(none)] >show master status;
+------------------+----------+--------------+------------------+----------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+----------------------------------------+
| mysql-bin.000001 | 470 | | | 93037495-54f6-11ed-b5aa-000c293a1832:1 |
+------------------+----------+--------------+------------------+----------------------------------------+
1 row in set (0.00 sec)
7>. 登录从库:
##node3,node4配置相同
[root@node3 ~]# mysql -uroot -p'123456'
##设定从主库同步
(root@localhost) [(none)] >change master to
-> MASTER_HOST='192.168.188.12', ##主库地址
-> MASTER_PORT=3306,
-> MASTER_USER='slave', ##主从同步的用户
-> MASTER_PASSWORD='123456', ##主从同步用户密码
-> MASTER_AUTO_POSITION=1; ##中继日志的位置
Query OK, 0 rows affected, 2 warnings (0.01 sec)
##启动从库同步开关
(root@localhost) [(none)] >start slave;
Query OK, 0 rows affected (0.00 sec)
##查看从库状态,检查主从同步是否配置成功
(root@localhost) [(none)] >show slave status \G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这两个参数的值要都是Yes,则表示主从配置成功