数据库运维

数据库升级要求

安装操作系统

停止监控,前端服务,停止数据库

数据备份

数据迁移->同步数据到新服务器

#查看官方安装手册

#二进制安装

#创建用户和安装目录

useradd mysql -r -s /sbin/nologin

mkdir -p /usr/local/mysql

#解压软件包到安装目录

tar -xvf ...

#进入mysql解压目录,把里面的所有东西都传到安装目录

cp -a ./* /usr/local/mysql

#更改权限

chown -R mysql.mysql /usr/local/mysql

#确保该系统没有my.cnf文件

cat /etc/my.cnf

rm -rf /etc/my.cnf

#手动初始化数据库(在mysql安装目录下)

cd /usr/local/mysql

bin/mysqld --initialize --user=mysql #这条命令后会出现密码(记住)

bin/mysql_ssl_rsa_setup

bin/mysqld_safe --user=mysql &

#设置system服务

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

#设置环境变量

#修改密码

mysql -uroot -p

alter user 'root'@'localhost' identified by "Aspirine1";

#初始化

/usr/local/bin/mysql_secure_installation

#源码安装

#查看文档也查看源代码的

#安装依赖环境

yum install -y gcc gcc-c++ make cmake ncurses-devel bison openssl-devel git

#解压boost到/usr/local/

#编写脚本cmake

cd /soft/mysql-5.7.40

再创建cmake脚本

vi cmake.sh
#/bin/bash

cmake . \

-DCMAKE_INSTALL_PREFIX=/mysql40 \

-DMYSQL_DATADIR=/mysql40/data \

-DMYSQL_TCP_PORT=3307 \

-DMYSQL_UNIX_ADDR=/mysql40/mysql40.sock \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITH_FEDERATED_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DENABLED_LOCAL_INFILE=1 \

-DEXTRA_CHARSETS=all \

-DDEFAULT_CHARSET=utf8mb4 \

-DDEFAULT_COLLATION=utf8mb4_general_ci \

-DDOWNLOAD_BOOST=0 \

-DWITH_BOOST=/usr/local/boost_1_59_0

#r如果执行脚本失败要清楚缓存才能再次执行

rm -rf CMakeCache.txt CMakeFiles

sh cmake.sh

#编译安装

make && make install

#源码安装方式不需要手动创建目录,make install时检测到没有会自动创建

#配置权限

chown -R mysql.mysql /mysql40

bin/mysqld --initialize --user=mysql #这条命令后会出现密码(记住)

bin/mysql_ssl_rsa_setup

bin/mysqld_safe --user=mysql &

#启动服务

cp /mysql40/support-files/mysql.server /etc/init.d/mysqld40

#独立启动方式

service mysqld40 start

service mysqld stop

service mysqld status

#初始化

cd /mysql40/bin

./mysql_secure_installation

#同时存在两个数据库通过sock连接,用别名简化

alias mysql33='mysql -S /tmp/mysql.sock'

alias mysql40='mysql -S /mysql40/mysql40.sock'

#远程连接通过ip端口

mysql -h192.168.255.10 -P3306 -uroot -pAspirine1

#mysqladmin管理数据库工具(在bin目录下的)

#利用mysqladmin修改密码,和关闭数据库

alias mysqladmin33='mysqladmin -S /tmp/mysql.sock'

alias mysqladmin40='mysqladmin -S /soft/mysql40/mysql40.sock'
#关闭数据库

mysqladmin40 shutdown -uroot -proot

#修改密码

mysqladmin40 -uroot -proot passsword '123'

#不如 alter user

#修改密码拓展

#两种方式修改

1.一种是mysqladmin

2.另一种是通过sql语句修改,因为用户信息本质也是保存在mysql表中的(这种危险是因为假如忘记加where可能就把所有用户的密码都改了)

3.第三种alter user 'root'@'localhost' identified by '123'

#show databases;时可以看到有mysql这个是很重要的东西没有这个启动不了mysql,用户信息表也在里面,

#可以use mysql;进入数据库,show tables;查看到user表,

#通过select user,host from user;可以看到所有用户

#上一个人离职没告诉密码,需要重置数据库密码就需要通过sql语句重置密码

要先关闭数据库,跳过授权表

service mysqld40 stop

./mysqld_safe --user=mysql --skip-grant-tables &

mysql -S /mysql40/mysql40.socket

#就可以直接不用密码进来了然后用sql语句改密码

update mysql.user set authentication_string=password('123456') where user='root' and host='localhost'; flush privileges;

#mysql配置文件

#在安装目录编写配置文件

mysqld 是服务端的参数配置

**mysql**是客户端的参数配置

mysqld

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

socket=/usr/local/mysql/mysql33.sock

port=3308
#想修改配置文件信息,只要修改 my.cnf 完后重启就行

service mysql40 restart

#排错拓展

遇到启动失败就可能是配置文件没按预期读取读取到了其他的my.cnf

服务端启动mysql时先读 安装目录------> 数据目录 ------> /etc/my.cnf

但客户端是先去找/etc的,所以可以把mysql的配置单独写在/etc/my.cnf

可以看数据目录下的以主机名命名的文件 日志------tail -f