一,单机安装
0,数据备份导出
dump /dʌmp/ ,转储
mysqldump -h 10.10.20.160 -uroot -ppassword@123 data_qa > /home/data/data_qa.sql
1,关闭mysql服务,删除mysql相关文件(谨慎操作)
# 查找
find / -name mysql
rm -rf /<对应路径>
如以下目录:
2,选择安装目录,解压
tar -zxvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz mysql-5.7.35
mkdir data
mkdir log
3,创建mysql用户和用户组
groupadd mysql
useradd -g mysql mysql
4,修改my.cnf文件
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端⼝
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装⽬录
basedir=/home/mysql/mysql-5.7.35
# 设置mysql数据库的数据的存放⽬录
datadir=/home/mysql/data
# 允许最⼤连接数
max_connections=10000
# 服务端使⽤的字符集默认为8⽐特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
sql-mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
log-bin-trust-function-creators=1
5,创建如下目录,并修改权限
mkdir /var/lib/mysql
chmod 777 /var/lib/mysql
6,在mysql解压包目录bin下,初始化数据库,获取初始密码
./mysqld --initialize --user=mysql --basedir=/home/mysql/mysql-5.7.35 --datadir=/home/mysql/data
7,复制启动脚本到资源目录
cp ./support-files/mysql.server /etc/init.d/mysqld
并修改 /etc/init.d/mysqld ,修改其 basedir 和 datadir 为实际对应⽬录:
basedir=/home/mysql/mysql-5.7.35
datadir=/home/mysql/data
8,启动mysql
service mysqld start
9,加入系统环境变量
vi /etc/profile
# 添加
export PATH=$PATH:/home/mysql/mysql-5.7.35/bin
source /etc/profile
10,首次登录
mysql -u root -p
11,更改密码
alter user user() identified by "password@123";
flush privileges;
12,设置远程主机登录
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;
二,主从配置
假设你已经按上面步骤部署好了两台mysql单机版
1,mysql主节点my.cnf配置修改
# 在[mysqld]加入下面的内容:
# 服务的唯一编号
server-id = 1
# 开启mysql binlog功能
log-bin = mysql-bin
# binlog记录内容的方式,记录被操作的每一行
binlog_format = ROW
# 减少记录日志的内容,只记录受影响的列
binlog_row_image = minimal
修改完后重启mysql服务,service mysqld restart
2,登录mysql主节点授权
grant replication slave on *.* to 'root'@'192.168.197.136' identified by 'password@123';
flush privileges;
3,查看主节点状态
show master status\G
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 592
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
4,mysql从节点my.cnf配置修改
# 在[mysqld]加入下面的内容:
# 服务的唯一编号
server-id = 2
# 开启mysql binlog功能
log-bin = mysql-bin
# binlog记录内容的方式,记录被操作的每一行
binlog_format = ROW
# 减少记录日志的内容,只记录受影响的列
binlog_row_image = minimal
修改完后重启mysql服务,service mysqld restart
5,mysql从节点登录,同步主节点信息
# 设置主服务器ip,同步账号密码,同步位置
Change master to master_host='192.168.45.67',master_user='root',master_password='password@123',master_log_file='mysql-bin.000001',master_log_pos=592,master_port=3306;
# 开启同步功能
start slave;
6,查看从节点状态
show slave status\G
注意:Slave_IO_Running和Slave_SQL_Running的状态都为Yes时,说明从库配置成功。
7,测试主从功能
create database testdata;
三、常用知识点整理
1,mysql 与 mysqld
mysql -- mysql is a command-line client for executing SQL statements interactively or in batch mode.
mysqld -- mysqld is the MySQL server.
就是说:
mysql是一个命令行程序
mysqld是一个服务
Linux系统里一般服务都是以的结尾的,比如httpd,mysqld等
所以在开启服务时也要用服务的名字,这样:
systemctl start mysqld.service
service stop mysqld
d的全拼是daemon /ˈdiːmən/,也就是守护程序的意思,常驻与后台
参考:mysql和mysqld的区别 - 搬砖在路上 - 博客园
2,service 与 systemctl
daemon命令 | systemctl命令 | 说明 |
---|---|---|
service [服务] start | systemctl start [unit type] | 启动服务 |
service [服务] stop | systemctl stop [unit type] | 停止服务 |
service [服务] restart | systemctl restart [unit type] | 重启服务 |
参考:service与systemctl命令比较 - Alick陈彬 - 博客园
3,mysql 用户组
编译不需要,但是安装需要。
之所以安装的脚本不自动给你创建好用户跟用户组,是因为每个 Linux 发行版创建用户的方法都不同(其实只是略有不同,但完全兼容很困难)
如果你使用发行版自带的 mysql,那么发行版的安装包已经把这些工作做了,所以直接使用发行版自带的 mysql 会自动帮你创建相关用户跟用户组
如果你自行编译 mysql,从 mysql 源代码开发者的角度不可能主动去做所有发行版的适配,所以只能让你自己去创建用户跟用户组
参考:linux下安装Mysql必须要新建叫mysql的用户组和用户吗_百度知道
4,mysql 各种路径
# 1,解压包路径/安装路径
# 2,启动/停止命令
service mysqld start
service mysqld stop
# 3,日志默认路径
# 错误日志
/var/log/mysqld.log
# socket
/var/lib/mysql/mysql.sock
# pid
/var/run/mysqld/mysqld.pid
# 4,配置文件路径
vi /etc/my.cnf
# 5,数据文件路径
指定的datadir
参考:
四、参考链接
https://www.jb51.net/article/129294.htmhttps://www.jb51.net/article/129294.htm