云存储
云存储分两个方面,一个是结构化数据存储,也就是关系型数据库,另外一个就是非结构化数据的存储。
关系型数据库
当时关系型数据库首选就是mysql,免费还方便,所以我就自己在云服务上装了mysql(云Mysql比服务器贵好多),安装的过程就不做赘述,也比较简单。
mysql安装
自己总结的快速安装mysql的脚本(基于CentOS),不复杂,如果目录什么按照文档来的话,基本上无脑一步步复制执行下去就行。
安装包下载地址(选择MySQL Compressed TAR Archive版本): downloads.mysql.com/archives/co…
-
删除原生的一些mariadb内容,安装CentOS7的时候如果勾选了附加的服务,就会自动安装上去。
rpm -qa|grep mariadb #查询出已安装的mariadb rpm -e --nodeps 文件名 #卸载 , 文件名为使用rpm -qa|grep mariadb 命令查出的所有文件
-
删除my.cnf
rm /etc/my.cnf //删除,后面重新建
-
创建mysql用户组,按照自己需要调整
groupadd mysql useradd -g mysql mysql
-
解压mysql
tar zxvf xxx.tar.gz
-
新建 my.cnf,配置信息都在这
vim /etc/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=/usr/local/mysql # 设置mysql数据库的数据的存放目录 datadir=/usr/local/mysql/data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB lower_case_table_names=1 max_allowed_packet=16M
-
给文件夹赋权限,并设置用户为mysql
mkdir /var/lib/mysql mkdir /var/lib/mysql/mysql chown -R mysql:mysql /var/lib/mysql chown -R mysql:mysql /var/lib/mysql/mysql
-
安装mysql
cd /usr/local/mysql chown -R mysql:mysql ./ #修改当前目录拥有者为mysql用户 ./scripts/mysql_install_db --user=mysql #安装数据库 chown -R mysql:mysql data #修改当前data目录拥有者为mysql用户
-
配置文件权限处理
chown 777 /etc/my.cnf
-
mysql系统自启
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld chmod +x /etc/rc.d/init.d/mysqld chkconfig --add mysqld chkconfig --list mysqld #命令输出类似下面的结果: #mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off #表明mysqld服务已经生效,在2、3、4、5运行级别随系统启动而自动启动,以后可以使用service命令控制mysql的启动和停止。 service mysqld start //启动mysql
-
mysql加入环境变量
vi /etc/profile
export PATH=$PATH:/usr/local/mysql/bin
. /etc/profile
-
mysql相关账户和密码设置 刚安装好时,root账户密码是空的,需要改动。如果有需要,还可以增加远程访问账户。
mysql -u root -p use mysql # 修改root用户密码 update user set password=password('you password') where user='root'and host='localhost'; # 注意下面的your username 和 your password改成你需要设置的用户和密码, 权限这块根据需要自己设置 GRANT ALL PRIVILEGES ON *.* TO'your username'@'%' IDENTIFIED BY 'your password' WITH GRANT OPTION; #刷新权限 FLUSH PRIVILEGES ;
为了保证数据的安全,也自己做了数据库的备份,每天定时备份一次,然后定期从服务器上拷贝到本地。(云mysql提供这些功能,如果预算允许,还是建议直接用云mysql)。
export db_pwd="xxxxx"
bak_dir="/root/mysql_bak"
db_name_array=("db1" "db2" "db3" "db4" "db5" "db6")
time="$(date +"%Y%m%d_%H%M%S")"
for name in ${db_name_array[@]}
do
echo "$name导出中......"
mysqldump -u$db_user -h127.0.0.1 -P3306 $name > $bak_dir/${name}_$time.sql
find $bak_dir -name "$name*.sql" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
done
脚本也比较简单,循环备份多个库,然后最多保留7天
看你业务量了,我大部分场景都是个人使用,没什么并发量,所以数据库放在服务器上,占用的资源也很少。
非结构化数据
我们一般说的非结构化数据,可能指图片,视频这类的。因为我对图片管理也做了很多工具,包括图片转换、图床管理等等,所以对非结构化的数据存储需求还是比较强烈的。
云平台上现在提供的OSS存储服务就是很好的选择(我原本也想自己做,但是发现代价有点大,文件增删改查,各类状态管理,安全保护,上传下载等等)。并且OSS存储价格还是比较便宜的,所以也是直接选择了OSS存储(华为云教OBS)。
价钱便宜,管理方便,二次开发SDK也很丰富
这个不做赘述,官方有很详细的文档