IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux安装Mysql8.0.27集群(传统方式&Docker方式)&&主从复制配置 -> 正文阅读

[系统运维]Linux安装Mysql8.0.27集群(传统方式&Docker方式)&&主从复制配置

目录

一、传统方式

二、Docker方式

三、主从复制


一、传统方式

1、下载好安装包(Linux - Generic (glibc 2.12) (x86, 64-bit), Compressed TAR Archive)上传到服务器解压缩

#执行之后是tar格式文件,再解压
[root@bogon ~]# xz -d mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz 
#解压
[root@bogon ~]# tar -xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar
#移动重命名
[root@bogon ~]# mv mysql-8.0.27-linux-glibc2.12-x86_64 /usr/local/mysql

?或者

[root@localhost ~]# tar -Jxvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz

2、在mysql目录下创建data文件存放数据

[root@bogon ~]# mkdir -p /usr/local/mysql/data

3、创建mysql用户组和用户

[root@bogon ~]# groupadd mysql
[root@bogon ~]# useradd -g mysql mysql

?4、授权

[root@bogon ~]# chown -R mysql.mysql /usr/local/mysql/

5、创建mariadb文件并授权给 mysql?

[root@bogon mysql]# mkdir /var/log/mariadb
[root@bogon mysql]# touch /var/log/mariadb/mariadb.log
[root@bogon mysql]# chown -R mysql:mysql /var/log/mariadb/

6、配置mysql的my.cnf如下

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
port       = 3306
socket     = /usr/local/mysql/mysql.sock
 
[mysqld]
port       = 3306
user       = mysql
socket     = /usr/local/mysql/mysql.sock
# 设置mysql的安装目录
basedir    = /usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir    = /usr/local/mysql/data

#配置主节点信息
server_id=3306
log-bin    = /usr/local/mysql/data/mysql-bin
log-bin=mysql-bin
#选择row模式 
binlog-format=ROW
#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-do-db=test
#不同步mysql系统数据库
binlog-ignore-db=mysql
#配置主节点信息结束

#设置mysql数据库的日志及进程数据的存放目录
log-error =/usr/local/mysql/logs/mysql-error.log
pid-file  =/usr/local/mysql/mysql.pid
# 服务端使用的字符集默认为8比特编码
character-set-server=utf8mb4
lower_case_table_names=1
autocommit =1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO


##################以上要修改的########################
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 1024
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 64M
thread_cache_size = 128
 
#query_cache_size = 128M
tmp_table_size = 128M
explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
 
binlog_format=mixed
 
binlog_expire_logs_seconds =864000
 
# 创建新表时将使用的默认存储引擎
default_storage_engine = InnoDB
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
transaction-isolation=READ-COMMITTED
 
[mysqldump]
quick
max_allowed_packet = 16M
 
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 4M
read_buffer = 2M
write_buffer = 2M
 
[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

7、初始化数据库

[root@bogon mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

?记住你的初始密码红框框冒号后面的??iBd5auJXgw+j

?8、配置环境变量

[root@bogon mysql]# vim /etc/profile

export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib

export PATH

#生效
[root@bogon mysql]# source /etc/profile

9、添加到服务设置开机启动

[root@bogon mysql]# cp support-files/mysql.server /etc/init.d/mysql
#授权
[root@bogon mysql]# chmod +x /etc/init.d/mysql 
#添加到开机启动
[root@bogon mysql]# chkconfig --add mysql
[root@bogon mysql]# chkconfig mysql on 
#检查是否成功
[root@bogon mysql]# chkconfig --list

?10、启动?

[root@bogon mysql]# service mysql start
#相应的命令
{start|stop|restart|reload|force-reload|status}

?11、登录数据库

#输入刚才的密码
[root@localhost mysql]# mysql -u root -p
Enter password: 

?12、修改密码设置远程连接

#修改密码
ALTER USER 'root'@'localhost' IDENTIFIED with mysql_native_password BY 'root';
flush privileges;

#创建任意远程连接
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
flush privileges;

#为root账户授权所有数据库所有权限
grant all  on *.*  to root;
flush privileges;

?更多权限设置参考?Mysql权限设置_熟透的蜗牛的博客-CSDN博客

注意:log-error =/usr/local/mysql/logs/mysql-error.log

这个文件我是手动创建的,创建完成之后,重新授权给mysql用户,如果安装过程出错,请记得看错误日志!!!

navicat连接时请关闭防火墙或者开放3306端口。

#创建错误日志文件
[root@localhost mysql]# touch /usr/local/mysql/logs/mysql-error.log
#重新授权
[root@bogon ~]# chown -R mysql.mysql /usr/local/mysql/

二、Docker方式

1、拉取镜像

[root@localhost mysql]# docker pull mysql

2、创建挂载文件

[root@localhost mysql]# mkdir -p /data/mysql/conf

3、配置文件my.cnf

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
socket     = /data/mysql/mysql.sock
 
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL

#主节点
#配置主节点信息
server_id=1001
log-bin=mysql-bin
#选择row模式 
binlog-format=ROW
#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-do-db=test
#不同步mysql系统数据库
binlog-ignore-db=mysql
#配置主节点信息结束

# 服务端使用的字符集默认为8比特编码
character-set-server=utf8mb4
lower_case_table_names=1
autocommit =1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO


##################以上要修改的########################
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 1024
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 64M
thread_cache_size = 128
 
#query_cache_size = 128M
tmp_table_size = 128M
explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
 
binlog_format=mixed
 
binlog_expire_logs_seconds =864000
 
# 创建新表时将使用的默认存储引擎
default_storage_engine = InnoDB
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
transaction-isolation=READ-COMMITTED
 
[mysqldump]
quick
max_allowed_packet = 16M
 
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 4M
read_buffer = 2M
write_buffer = 2M
 
[mysqlhotcopy]
interactive-timeout

4、创建Docker容器

docker run \
--privileged=true \
--restart=always \
-p 3306:3306 --name mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:latest

此时已经可以navicat连接了,如果连不上请继续往下。?

?5、配置远程连接

#进入容器
[root@bogon log]# docker container exec -it mysql /bin/bash
#配置远程访问
root@4d5306b674f7:/# mysql -uroot -p
#然后输入密码root

#创建任意远程连接
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
flush privileges;

#为root账户授权所有数据库所有权限
grant all  on *.*  to root;
flush privileges;

三、主从复制

原理简单描述

  1. master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日志中。
  2. slave服务器会定时对master二进制日志询问是否发生改变,如果发生改变,则开始一个I/O线程请求master二进制事件。
  3. 同时master节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志(relay-log)中,从节点将启动IO线程从中继日志中读取二进制日志,然后SQL线程执行解析后的sql语句。
    ?

以Docker安装方式为例

1、配置主服务器my.cnf的[mysqld]下添加

#主节点
server_id  = 1001
log-bin    = mysql-bin
#选择row模式 
binlog-format=ROW
#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-do-db=test
#不同步mysql系统数据库
binlog-ignore-db=mysql

查看?

show variables like '%server_id%';

2、?配置slave的配置文件


#在/data/mysql下创建salve的配置文件文件
[root@bogon mysql]# mkdir -p /data/mysql/slave/conf

从节点my.cnf配置文件?

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL

#从节点
server_id  = 1002
log-bin    = mysql-bin
#选择row模式
binlog-format=ROW
#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行 
replicate-do-db=test
#不同步mysql系统数据库
replicate-ignore-db=mysql
#只读 只对非root用户有效
read-only=1

# 服务端使用的字符集默认为8比特编码
character-set-server=utf8mb4
lower_case_table_names=1
autocommit =1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO


##################以上要修改的########################
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 1024
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 64M
thread_cache_size = 128
 
#query_cache_size = 128M
tmp_table_size = 128M
explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
 
binlog_format=mixed
 
binlog_expire_logs_seconds =864000
 
# 创建新表时将使用的默认存储引擎
default_storage_engine = InnoDB
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
transaction-isolation=READ-COMMITTED
 
[mysqldump]
quick
max_allowed_packet = 16M
 
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 4M
read_buffer = 2M
write_buffer = 2M
 
[mysqlhotcopy]
interactive-timeout
 

3、启动从节点

docker run \
--privileged=true \
--restart=always \
-p 33060:3306 --name mysql-slave \
-v /data/mysql/slave/data:/var/lib/mysql \
-v /data/mysql/slave/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:latest

?4、开始同步数据

在主节点执行sql

show master status;

?在从节点上执行如下sql

CHANGE MASTER TO master_host = '192.168.139.159',
master_user = 'root',
master_password = 'root',
master_log_file = 'mysql-bin.000003',
master_log_pos = 364;

然后从节点执行如下sql

#开始同步
start slave;
#停止
STOP SLAVE;
#查看同步状态
SHOW SLAVE STATUS;

到此结束?

参考:https://blog.csdn.net/u010565545/article/details/104961184

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:45:44  更:2021-11-22 12:48:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:19:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码