分类 Tech Insight 下的文章

云服务器中通过Docker镜像的方式使用Mysql数据库,数据安全考量定期备份数据库到阿里云OSS中

本文主要实现在阿里云ECS服务器中,通过脚本的方式实现将Docker中的Mysql数据库备份到阿里云OSS中。其他云服务商和其他环境的MySQL也可以使用类似的方式。具体方式不再赘述。

环境和工具

  1. 阿里云ECS服务器,安装Ubuntu或任何带有定时任务cron的Linux操作系统
  2. 阿里云OSS bucket和相应访问的账户
  3. 阿里云OSS命令行工具ossutil,可以到这里下载或查看详情
  4. MySQL镜像

具体步骤

开通OSS和相应子账号

  1. 进入阿里云OSS(对象存储)控制台,如果没有开通OSS服务可能会提示权限和开通确认。
  2. 创建bucket/存储桶,输入名字,比如xxxxbackup,记住这个名字以及界面中出现的Endpoint(地域节点),后续会用到。
    WX20220720-115411.png
  3. 创建一个有API的阿里云子账号,并赋予OSS读写权限。记住该账号的API和Secret,后续会用到。帮助文档
    WX20220720-115547.png

下载OSS命令行工具ossutil到本地系统

  1. 通过wget https://gosspublic.alicdn.com/ossutil/1.7.13/ossutil64下载到本地。这里是64位操作系统,32位可以去下载界面查看对应的下载地址。
  2. 增加运行权限:chmod +x ossutil64
  3. 移动到Path中:sudo mv ossutil64 /bin/

编写脚本

这里需要注意docker容器的名称,容器中应该有MYSQL用户名和密码的环境变量;示例中使用的是root作为用户名;另外备份临时文件夹也需要提前使用mkdir建好

脚本内容示例:

#!/bin/sh 

mysql_dump_path=备份文件临时目录,如/var/dbbackup/ 

#oss-config 
oss_endpoint="阿里云OSS Endpoint" 
oss_bucket="阿里云OSS bucket名称" 
oss_accesskeyid="子账号AccessKeyId" 
oss_accesskeysecret="子账号 AccessKey Secret" 
backup_name=`date +%Y%m%d%H%M%S`
cd ${mysql_dump_path} 

# 使用 mysqldump 备份整个数据库到临时文件夹中
# 注意docker修改docker镜像名称,这里是some-mysql
docker exec some-mysql sh -c 'mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" --all-databases' > ${backup_name}.sql

# 打包/pack 
tar zcf ${backup_name}.tar.gz ${backup_name}.sql 
rm -f ${backup_name}.sql 

# 备份到OSS
ossutil64 cp ${backup_name}.tar.gz oss://${oss_bucket}/mysql/backup/${backup_name}.tar.gz -f -e ${oss_endpoint} -i ${oss_accesskeyid} -k ${oss_accesskeysecret} 
rm -f ${backup_name}.tar.gz 
echo "备份完成"

将脚本保存至任意一个不错的位置,比如/var/backup/dbbackup.sh,赋予可执行权限:sudo chmod +x /var/backup/dbbackup.sh

试着运行一下脚本文件sudo /var/backup/dbbackup.sh,再去oss控制台该bucket下-文件管理处查看是否有备份文件存入。如果一切没有问题,则就可以加入cron了。

加入cron计划任务

注:如果脚本位置和临时备份文件夹位置是当前用户无法直接编辑的,则应使用一下方法,在系统级别运行计划任务;用户级别会因为权限问题出错

使用你喜欢的编辑器打开/etc/crontab文件,并在文件末尾加上这行:

23 2 * * * root /var/backup/dbbackup.sh

这表示在每天的02:23:00运行我们的备份脚本。

重新启动cron计划任务:sudo service cron reload

在次日2:23分之后检查OSS控制台后台,即可发现整个数据库已经备份到阿里云OSS。

参考

  1. 使用ossutil定时备份自建mysql数据库到阿里云OSS
  2. Cron介绍
  3. docker hub: mysql

2019年能源消费总量:4860.0Mtce = 1.42434936e+20J = 48亿吨标准煤

国土面积:960万平方公里 = 9.6e+12 m2

我国属太阳能资源丰富的国家之一,全国总面积2/3以上地区年日照时数大于2000小时,年辐射量在5000MJ/m2以上。据统计资料分析,中国陆地面积每年接收的太阳辐射总量为3.3×103~8.4×103MJ/m2,相当于24,000亿吨标准煤的储量。

太阳能储量/能源消费总量:24000/48 = 500倍。

如果使用20%转化率的太阳能电池,则为满足2018年一次能源消耗量,则需要9.6e+12 48 / (24,000 20%) = 9.6 万平方公里(1.44亿亩),1%的国土面积。

考虑到中国有大片沙漠戈壁(总面积达130.8万平方千米,约占全国土地总面积的13.6%),所以我建议:

给沙漠和戈壁披上太阳能电池!发电,减少沙尘危害,实现碳中和!

Q&A、答疑:

  1. 这事能赚钱么?
    按照目前市面上的太阳能电池价格和年发电量比例,不能赚钱。但是能极大地降低中国碳排放量,极大减少石油依赖,极大保护中国的环境。而且能带动太阳能电池板研发制造、电力输送、终端产品(电动汽车、电动工业机械等)非常多的产业发展。如果我们走在前头,还能把这些先进的产业链出口全球,赚取知识产权和研发设计等高端附加值。
  2. 这事儿技术上可行吗?

    • 目前中国能源消费总量年均增速在3.4%左右,按照国家「十四五」计划中的「到2030年达到碳排放峰值」,预计我们最多耗能应该在4860.0Mtce * (1 + 3.4%) ^ 11 = 7095 Mtce, 71亿吨标准煤,或者说 207937422000000000000 焦耳
    • 目前市面上太阳能天池的功率面积比大约在200 瓦特/平米, 计算成每年产出的电能和面积比应该是2522880000 焦耳,那么很清楚就知道咱们需要207937422000000000000/2522880000 = 82420654966 平方米 = 82420 平方公里 = 1.23569 亿亩土地。小于上面假设的9.6万平方公里,更小于130.8万平方千米的沙漠戈壁。说明有的是地方装。
    • 目前中国光伏产业是少数处于世界领先位置的产业,而且还有点产能过剩,我们自己用没问题!
    • 电池技术突飞猛进,储能电池价格节节下降,在2018年,最低0.8 元/Wh即可买到!
  3. 大概要花多少钱?

    • 太阳能电板: 这么大规模的采购,单价可以降低到0.5元/W(原价在1元/W左右)。按照最高71亿吨标准煤的年发电量,需要2.07937e+20J/3.1536e+07s = 6.59365e+12 W的装机量,也就是需要3.296825e+12元,即3.296825万亿人民币。还不到2008年中国4万亿振兴计划嘛,咱们现在可比十多年前富强多了!
    • 储能电池:目前最低0.8元/Wh单价,咱们集中采购再降低一点,0.4元/Wh!再按照一天4小时发电量做储能,需要6.59365e+12 W * 4 * 0.4 = 1.05498e+13,即10.5498万亿人民币。看起来这个项目跟电动汽车一样,电池是大头!
    • 土地:沙漠戈壁啥的,基本上可以免费,就算1000元/亩象征性收点钱。1.64841e+13 W的装机量,目前市面上太阳能电池功率占面积比大约200 W/平米, 再留一个10%的面积用来固定,那么需要9.06628e+10 平米 = 1.35926e+8亩,粗略需要1.26亿亩地。看来目前转化率不错,不需要1.38亿亩土地了。1.26亿亩土地,需要1260亿买地。
    • 运送安装:厂家包邮,沙漠全是沙子,他们可以就近建厂。沙漠治理+安装费用算1万元/亩,需要1.26万亿
    • 配送运输:国家电网赚钱的事情,给他们2000亿
    • 其他费用: 1000亿
    • 总费用: 15.5326万亿,十五万亿的能源投资计划出炉了!
  4. 那么多的太阳能电池和储能电池,哪里来?
    太阳能电池需要单晶硅,沙漠里面都是沙,就地取材即可。然后招标10-100个太阳能电池厂干活。另外中国是稀土大国,储能电池所需原料都有,请现在做动力电池的老曹出马,也干个10-100个电池厂搞生产。中国集中力量干大事的能力,毋庸置疑!
  5. 这么大的工程规模,怎么铺设电池,怎么输送?
    国家电网的事情,你能发电,他们就能输电,不操心。
  6. 谁掏钱啊?
    15.5万亿,你让国家突然出这么多也不太好,毕竟2019年国家财政收入才19万亿。我建议用财政收入的5%,即1万亿,在加上社会资本1万亿,每年2万亿投入,8年即可完工!
  7. 晚上怎么办?靠月亮吗?
    电池,储能电池。另外晚上基本上工业用电木有了,再加上水能发电、核能发电等的补充,相信能够满足夜晚供电的需求。
  8. 收益?

    • 碳中和!一个几乎只用可持续的绿色能源的国家,子孙后代不愁环境污染
    • 一个基本上没有石油依存的国家,没人随便能源卡脖子
    • 带动国内相关产业发展,少说带动50万亿产业总量,增加相关就业人口1亿人
    • 相关技术出国国外,从产品制造、到技术研发、到设计服务,高低搭配,应有尽有,赚一堆外汇!

参考

  1. 国家数据 - 能源 - 能源消费量

这里列出一些数据/观点,供大家参考:

  1. statista上面有一个Size of the public cloud platform as a service (PaaS) market worldwide from 2015 to 2022 (更新时间 by Arne Holst, May 4, 2020):
    微信截图_20200609231949.png
  2. businesswire上面Global Platform as a service (PaaS) Market Report 2020 - ResearchAndMarkets.com (December 04, 2019 09:53 AM Eastern Standard Time):

    The global platform as a service (PaaS) market was valued at about $29.58 billion in 2018 and is expected to grow to $52.4 billion at a CAGR of 15.4% through 2022.
  3. Gartner的[Gartner Says Nearly 50 Percent of PaaS Offerings Are Now Cloud-Only]4:

    The total PaaS market revenue is forecast to reach $20 billion in 2019, and to exceed $34 billion in 2022, according to the latest forecast from Gartner.
  4. Planet Market Reports的[Platform-as-a-service PaaS Market 2019 | Global Market Size, Share, Supply, Demand, Segments and Forecast 2024]5:

    The global platform as a service market size will grow by USD 31.4 billion during 2024.

可以看到各方数据/观点相差非常大(1-2倍),如果折中,则2020年全球PaaS市场规模应该在200-400亿美元左右。

这篇文章是机器学习常用基本算法文章的一个索引,具体可以参见具体的文章链接
文章状态 alpha

  1. 决策树 Decision Tree
  2. 随机森林 Random Forest
  3. 逻辑回归 Logistic Regression
  4. 支持向量机 SVM
  5. 朴素贝叶斯
  6. K最近邻算法
  7. K均值算法
  8. Adaboost 算法
  9. 神经网络
  10. 马尔可夫

参考

  1. Kaggle: Learning Machine Learning
  2. CSDN: 轻松看懂机器学习十大常用算法
  3. 伯乐在线: 10 种机器学习算法的要点 (3的翻译)
  4. Essentials of Machine Learning Algorithms
  5. A Tour of The Top 10 Algorithms for Machine Learning Newbies

Salesforce inline editing是非常方便的功能,可以提供方便的在视图中编辑和保存字段的功能。

但是好东西不是十全十美的,它有些限制:
Guidelines for Editing Records with the Inline Editor

而对于列表视图(lists),有下面限制:

  1. 某些标准字段并不支持,比如:Case Status, Opportunity Stage, Opportunity Amount, Opportunity Quantity and Lead Status, and most Task and Event fields只能在记录编辑页面编辑.
  2. 如果org使用了记录类型,则必须保证视图里面的列出的记录全部属于同一个记录类型。换而言之,必须使用记录类型作为筛选条件,同时最多选择一个类型或者留空(对于主记录类型)
  3. 在筛选条件的逻辑里面,不能包含或(OR)从句(clause)
  4. 对于活动(Activities)则必须有额外的筛选,指定任务(Task)为真(True)或者为假(False)

更多信息,可以参考Salesforce英文说明:Editing Records Directly From Enhanced Lists