写在前面的话
本次安装部署的方法是我在生产上的实际操作,又不懂的小伙伴可以照搬过去,主要是为了应付对数据库安装不在行的小伙伴使用,主要是为了应付工作,具体的配置原理可以后慢慢摸索。
一、下载文件
可以在官网直接下载,本次使用的是MySQL-5.7.39
二、上传文件
因使用工具不以这里就不做描述了,总之能MySQL包整上去就可以了。
三、解压缩
tar zxvf mysql-5.7.39-x86_64.tar.gz -C /usr/local
四、处理MySQL其他事项
# 因MySQL默认使用的是/usr/local/mysql因此需要重命名或者做软连接
mv /usr/local/mysql-5.7.39-x86_64 /usr/local/mysql
# 或者
ln -s /usr/local/mysql-5.7.39-x86_64 /usr/local/mysql
五、创建MySQL用户
useradd -s /sbin/nolong -M mysql
mysql用户只需要驱动MySQL使用没有特殊要去可以不设定bash和家目录
需要登录的可直接创建用户
useradd mysql
六、创建MySQL数据存储路径并更改所属组和所有者
mkdir /data
chown -R mysql. /data
chown -R mysql. /usr/local/mysql
# 如果使用软连接请把原路径一并更改
chown -R /usr/local/mysql-5.7.39.x86_64
七、设置环境变量
vim /ete/profile
# 末尾添加
MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
# :x! 保存退出
# 重新加载环境变量
source /etc/profile
八、初始化数据库
mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data
个人感觉这就是安装数据库不像是初始化,因为完事只要要进行越权操作进行反复的密码修改,如果有其他能成功的小伙伴可自行使用其他命令进行初始化,总之能用上就是好事。
九、制作启动文件和配置文件
cp /usr/local/mysql/support-files/mysql.service /etc/init.d/mysqld
十、编写配置文件(简单基础暂时能用)
vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data
port=3306
socket=/data/run/mysql.sock
[client]
port=3306
socket=/data/run/mysql.sock
PS:以上配置不保证一定好用,如果不好用可将socket项注释掉或者删除
十一、启动MySQL
我使用的是`init`进程管理方式,后期会更新`systemd`管理方式
service mysqld start
如果启动失败可自行百度,但是据我这么多的经验之谈,百度也不应定能找到,因为MySQL的报错前篇一律都是一样的,必须要去错误日之下进行查找
一般会告诉/xx/xx/xx/xx/localhost.hostlocal.err这个文件不太好找可以多启动几次之后好好查查可使用`find / -name localhost.hostlocal.err`查查应该可以找到。
mysql -uroot -p
# 一般会包密码错误一次需要跳过权限检查表用以修改密码
vim /etc/my.cnf
[mysqld]
# 在这下边添加
skip-grant-tables
十二、重启数据库
service mysqld restart
再次进入数据库进行修改密码。修改后将该选项删除,再次重启数据库,这次发现能进入了,但是不要高兴太早,因为MySQL还会叫修改一次数据密码才能使用。
十三、使用前操作
mysql -uroot -p
# 不需要输入密码直接回车 即可进入
执行CRDI操作会提示让修改密码。
--使用set命令修改,其他的貌似也不好使
set password=password("your password");
--或者使用
update user set authentication_string=password("yourpassword") where user="root";
--修改完别忘了刷新权限表
flush privileges;
修改完密码之后将配置文件中的绕过权限表 检查注释或删除 ,之后重启数据库
mysql -uroot -p
# 此时需要输入修改后的密码
进入数据库之后将会再次提示修改密码
set password=password("your password");
--修改完别忘了刷新权限表
flush privileges;
--退出
quit;
再次进入数据库之后会发现可以正常使用了,当然感觉麻烦的话可以在刷新权限表之后不退出直接进行操作也是可以的,但本人没有尝试过不敢保证会成功。
进行主从复制配置
一、主配置文件修改
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data
port=3306
socket=/data/run/mysql.sock
server-id = 1 # (服务id,这个需要每个不同)
log_bin=/var/log/mysql/mysql-bin.log # (这是主服务器,必须开启log_bin,这句就是开启了)
binlog_format=mixed # (混合比较好)
binlog_do_db=xxxx # (需要同步的数据库,如果多个数据库,重复这个配置)
binlog_ignore_db=mysql #(排除不需要同步的数据库,如果多个数据库,重复这个配置)
[client]
port=3306
socket=/data/run/mysql.sock
重启MySQL服务开是否能够启动,不能启动检查配置文件,多数问配置文件错误包括英文名等。
二、进入数据库查看master信息
mysql> show master status;
+------------------+----------+--------------+------------------+--------------- ----+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_ Set |
+------------------+----------+--------------+------------------+--------------- ----+
| mysql-bin.000003 | 232 | master | mysql | |
+------------------+----------+--------------+------------------+--------------- ----+
1 row in set (0.03 sec)
三、创建slave账户及赋权
create user 'slave'@'%' identified by ‘MySQL5.7clone’
grant replication slave,replication client on *.* to ‘slave’@’%’;
四、从库配置
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data
port=3306
socket=/data/run/mysql.sock
server-id=2 # (注意服务id,这个需要每个不同,不然从库连接不上主库)
log_bin=/var/log/mysql/mysql-bin.log # (这是主服务器,必须开启log_bin,这句就是开启了)
binlog_format=mixed # (混合比较好)
binlog_do_db=xxxx # (需要同步的数据库,如果多个数据库,重复这个配置)
binlog_ignore_db=mysql #(排除不需要同步的数据库,如果多个数据库,重复这个配置)
[client]
port=3306
socket=/data/run/mysql.sock
重启从库数据库,并进入数据库,连接主库进行同步。
change master to master_host='192.168.88.188', master_port=3306,master_user='slave',master_password='MySQL5.7clone',master_log_file='mysql-bin.000003',master_log_pos=232
master_log_file对应master的file值,,master_log_pos对应master的Position的值。
五、启动slave
-- 启动跟随
start slave;
-- 查看状态
show slave status\G;
-- 着重查看两处
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
-- IO 如果为NO多数为网络不同,或者账户密码错误,请检查网络是否联通,账户是有有远程登录的权限,如果没有请赋权操作,如果密码错误请修改为正确密码。
-- SQL 如果为NO,多数为在从库上进行了,写的操作。可重新配置跟随
六、重新配置跟随
-- 停止跟随
stop slave;
-- 重新设置跟随
change master to master_host='192.168.88.188', master_port=3306,master_user='slave',master_password='MySQL5.7clone',master_log_file='mysql-bin.000003',master_log_pos=232;
-- 注意用户名密码和file及pos
-- 启动跟随
start slave;
-- 查看状态
show slave status\G;
至此基本完成,剩余细节完后会补充。