mysql安装以及主从配置,备份,安装常见问题

1.使用前准备

版本使用的是:mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
可以去国内镜像源下载速度比较快

centos集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以一定需要先卸载掉mariadb

  • 列出所有被安装的rpm package

rpm -qa | grep mariadb

  • 卸载

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

  • 查看有无安装mysql

rpm -qa | grep mysql

  • 卸载流程

ps aux|grep mysql

find / -name mysql

rm -rf xxxxxxxxxxxx

  • 首先解压

tar -zxvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz -C /usr/local

  • 修改名称

mv mysql-5.7.29-linux-glibc2.12-x86_64 mysql

  • 配置设置开机自启动

cd mysql/support-files/
cp mysql.server /etc/init.d/mysql

  • 修改/etc/init.d/mysql参数

vim /etc/init.d/mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

图片.png
  • 建立一个mysql的组:

groupadd mysql

  • 建立mysql用户,并且把用户放到mysql组:

useradd -r -g mysql mysql

  • 给mysql用户设置一个密码:

passwd mysql

  • 更改目录/usr/local/mysql 拥有者:

chown -R mysql:mysql /usr/local/mysql/

2.数据库初始化

cd /usr/local/mysql/bin/
 ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

  • 如果出现这个错误 提示缺少一些库


    图片.png
  • 执行

yum install -y libaio 或者 yum -y install numact 然后再执行安装操作

记录一下初始密码
  • 数据库加密

./mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

  • 数据库启动

./mysqld_safe --user=mysql &

  • 检查状态

ps -ef|grep mysql

3. 数据库操作

  • 登录 首次登陆密码为上面初始化密码

./mysql -uroot -p

  • 修改密码
    set password=password('新密码');

  • 远程访问

grant all privileges on *.* to root@'%' identified by 'root';
flush privileges;

4.访问操作

  • 开放本地防火墙端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
关闭防火墙也可以

5.后续配置


开机自启

  • 添加服务

chkconfig --add mysql

  • 开启自启

chkconfig mysql on


配置环境变量(可选操作)

vim /etc/profile

添加:

MYSQL_HOME=/usr/local/mysql
export MYSQL_HOME

图片.png
  • 配置生效

source /etc/profile

  • 或者不配置环境变量,配置一个软连接(推荐!!!!!)

ln -s /usr/local/mysql/bin/mysql /usr/bin

下次可以直接使用mysql指令了

完成安装

5.主从配置

1.配置my.cnf文件

server_id主从id必须不一致

vim /etc/my.cnf

[clinet]
port = 3306
default-character-set=utf8
[mysqld]
port = 3306
server-id=64
explicit_defaults_for_timestamp=true
character-set-server=utf8
basedir= /usr/local/mysql
datadir= /usr/local/mysql/data
default-storage-engine=INNODB
log-bin=mysql-bin

2.在主库中配置

创建一个用户给从数据库并且给予权限,其中ip,改为从库ip地址

create user slave;
grant replication slave on *.* to 'slave'@'127.0.0.1'identified by 'root123';
flush privileges;  

查询主库状态

show master status;
图片.png

记录下面的file 和position

3. 在从库中配置

填入上面记录的值,master_host填主机ip

change master to master_host='127.0.0.1',master_port=3306,master_user='slave',master_password='root123',master_log_file='master-bin.000002',master_log_pos=2505;

然后执行

start slave; 关闭是stop slave

查看 slave 的状态

show slave status \G
图片.png
图片.png

这两个都是yes表示启动成功了

4.如果没有成功,请在主库中

flush logs;
show master status;

记下File, Position。

图片.png

来到从库

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=154;
stop slave;
start slave;
show slave status \G;
图片.png

可以看到已经成功完成主从配置

配置双主,只需要把从库当主库,主库当从库,按照以上思路再配置一遍即可

6.数据库备份

1. 全量备份

进入到自定义的脚本目录

/usr/local/mysql/sh
创建一个脚本

vim mysql_weekly.sh

编辑shell脚本



# 全备份路径

backDir=/usr/local/mysql/weekly


# 日志文件

logFile=/usr/local/mysql/weekly/weekly_all.log

 

# 获取当前时间,用于命名

nowDate=`date +%Y%m%d`

beginTime=`date +"%Y%m%d %H:%M:%S"`

 

# 进入备份文件夹

cd $backDir

dumpFile=$nowDate.sql

dumpFileTgz=$nowDate.sql.tgz

 

# mysqldump 导出所有数据库

echo dumping...

mysqldump -uroot -proot --quick --all-databases --flush-logs --delete-master-logs --single-transaction > $dumpFile

echo compressing...

 

# 压缩文件

tar czvf $dumpFileTgz $dumpFile
# 是否删除sql文件
#rm $dumpFile

endTime=`date +"%Y%m%d %H:%M:%S"`

echo begin:$beginTime end:$endTime $dumpFileTgz success >> $logFile

2. 增量备份

首先查看增量备份有没有开启,参考下图


图片.png

创建脚本文件mysql_daily.sh


# 增量备份存放路径

backDir=/usr/local/mysql/daily

# binlog存放路径

binDir=/usr/local/mysql/data
# (上面开启binlog的路径,忘记了就通过mysql show variables like '%log_bin%'; 进行查询)

# binlog.index 文件路径

binIndex=/usr/local/mysql/data/mysql-bin.index
#(上面开启binlog的路径,忘记了就通过mysql show variables like '%log_bin%'; 进行查询)

# 日志文件

logFile=/usr/local/mysql/daily/bak-daily.log

# 将当前所有的日志写到磁盘,会新建一个00000*的binlog文件

mysqladmin -uroot -proot flush-logs

# 获取当前有几条binlog文件(需要保证是从1开始的)

count=`wc -l $binIndex | awk '{print $1}'`

nextNum=0

for file in `cat $binIndex`

do

# 获取文件名,去除文件夹名

base=`basename $file`

# 遍历每个binlog文件,如果是最新的不做操作,否则备份

nextNum=`expr $nextNum + 1`

if [ $nextNum -eq $count ]

then

echo $base skip! >> $logFile

else

dest=$backDir/$base

# file already exist

if(test -e $dest)

then

echo $base exist! >> $logFile



7. 定时任务

配置定时任务,去定时启动这2个脚本

输入如下命令,进入定时任务编辑界面:

crontab -e

添加如下命令(注意:linux的定时规则与spring的不同)

每天2点启动一次增量备份

0 2 * * * sh   /usr/local/mysql/sh/mysql_daily.sh

0 2 5 * * sh /usr/local/mysql/sh/mysql_weekly.sh

8. 常见问题

1.授权给其他用用户到数据库的权限报错的问题解决,尤其在配置其他访问数据库权限的时候

查看是否有授权权限

select host,user,grant_priv,Super_priv from mysql.user;

发现 没权限,改成 Y

update mysql.user set grant_priv='y' where host='localhost';
update mysql.user set grant_priv='y' where host='%';

刷新权限

flush privileges;

2.linux忘记mysql密码快速处理方法

首先需要我们关闭mysql

service stop mysql

然后执行

mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

现在可以直接登陆,不需要密码

mysql -u root

修改密码,我的版本是5.7

update user set authentication_string=password("test") where user='root';

刷新权限后成功

flush privileges;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容