单机
安装
1
2
3
4
5
6
| wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'
sudo yum -y install mysql-community-server
systemctl start mysqld
systemctl status mysqld
sudo grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p #输入查看到的密码
|
配置
vim /etc/my.cnf
1
2
3
4
5
6
7
8
| [client]
default-character-set = utf8
[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci #不区分大小写
collation-server = utf8_bin #区分大小写
collation-server = utf8_unicode_ci #比 utf8_general_ci 更准确
|
授权任何主机连接
1
2
3
| mysql -u 用户名 -p
GRANT ALL PRIVILEGES ON *.- TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
|
集群
安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| #关防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar
tar xvf mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar
yum install libncurses* -y
# 移除已有的 MariaDB libs
yum -y remove mariadb-libs
# 安装 MySQL rpm
rpm -ivh mysql-community-common-5.7*.rpm
rpm -ivh mysql-community-libs-5.7*.rpm
rpm -ivh mysql-community-devel-5.7*.rpm
rpm -ivh mysql-community-client-5.7*.rpm
rpm -ivh mysql-community-server-5.7*.rpm
systemctl start mysqld
grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p
mysql> ALTER USER USER() IDENTIFIED BY 'Password123@mysql';
|
集群节点设置(主/主)
添加复制用户及权限,在 MySQL-1 节点上创建用于复制数据的用户 clusteruser,授权 MySQL-2 节点访问,在 MySQL-2 节点上创建用于复制数据的用户 clusteruser,授权 MySQL-1 节点访问
1
2
3
4
5
6
7
8
9
| # 开启 root 用户远程访问
mysql> grant all privileges on *.* to 'root'@'%' identified by 'Password123@mysql';
# 添加 MySQL 主从复制⽤户 clusteruser,并授权 MySQL-2 节点可访问 MySQL-1 节点
mysql> grant replication slave,file on *.* to 'clusteruser'@'2/1节点IP' identified by 'Replication@123';
# 刷新授权
mysql> flush privileges;
我们在 1/2节点上添加一个复制账户 'clusteruser',允许 '2/1节点IP' 客户端来访问,密码为 'Replication@123'。
如果有多个从服务器需要共享这一个复制账号,可以使用 '10.1.11.%' 来替代整个网段。
|
修改集群配置文件
将 /etc/my.cnf 文件内容修改如下,MySQL-2 节点修改server-id=102
和auto_increment_offset=2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| [mysqld]
datadir=/var/lib/mysql
default-storage-engine=INNODB
character_set_server=utf8
lower_case_table_names=1
table_open_cache=128
max_connections=2000
max_connect_errors=6000
innodb_file_per_table=1
innodb_buffer_pool_size=1G
max_allowed_packet=64M
transaction_isolation=READ-COMMITTED
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=0
sync_binlog=0
innodb_lock_wait_timeout=1800
bind-address=0.0.0.0
group_concat_max_len=1024000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
skip-name-resolve
server-id=101
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=1
expire_logs_days=30
[mysql]
default-character-set=utf8
[mysql.server]
default-character-set=utf8
|
配置完成后重启 MySQL 服务:
systemctl restart mysqld
配置 MySQL 主从关系
分别登录到 MySQL 的两个节点上,配置相互的主从关系。
获取各节点状态信息
到各节点上获取节点状态信息:
1
2
3
4
5
6
| mysql -uroot -p'Password123@mysql'
mysql> flush tables with read lock\G
Query OK, 0 rows affected (0.00 sec)
mysql> show master status;
|
可以获取到 ‘File’ 和 ‘Position’ 两个值,用于设置主从关系。
配置主从关系
在各个节点上执行以下命令:
1
2
3
4
5
6
7
8
9
| mysql> change master to master_host='2/1节点IP', master_user='clusteruser', master_password='Replication@123', master_log_file='2/1节点File', master_log_pos=2/1节点Position;
mysql> start slave;
mysql> show slave status\G
提示:master_host 为 2/1节点的 IP,master_log_file 为 2/1节点上查询到的 "File" 值,master_log_pos 为 2/1节点上查询到的 "Position" 值。
当 "show slave status\G" 命令执行结果中,查询到 Slave_IO_Running 和 Slave_SQL_Running 都为 Yes 则表明配置成功。
最后执行 MySQL 命令解锁:
mysql> UNLOCK TABLES;
|
创建数据库
配置好主主节点后,登录到任意节点
1
2
3
4
| mysql> CREATE DATABASE `testdb` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
在另一个节点上,用 MySQL 命令可以同样查看到新建的数据库:
mysql> show databases;
|
文章作者
lim
上次更新
2024-11-21
(1dac9ff)
许可协议
CC BY-NC-ND 4.0