InstallOTP

Erlang 之 OTP 安装管理及环境配置

OTP 官网

Ubuntu 下安装 otp

安装依赖

1
apt-get install g++ gcc make libncurses5-dev libssl-dev

因为我们项目并没用Java作为NIF,所以不需要安装Java,有需要的就先安装Java;同时因为服务器只有命令行,不需要wx这个图形库.

编译安装,执行失败可分步执行

1
2
3
4
5
6
cd RunSoft
wget http://erlang.org/download/otp_src_18.3.tar.gz
tar otp_src_18.3.tar.gz
./configure
make -j4
sudo make install

这样 Erlang 就安装好了.可以输入命令 erl 测试是否安装好


注 实际安装不添加 ./configure –prefix=/opt/otp/ ,将 otp 安装到默认系统位置,否则运行 rebar 或安装 Ejabberd 会出现莫名奇妙的错误,以下记录忽略

指定 prefix ,是为了删除方便.同时在 ~/.bashrc 将 /opt/otp/bin 添加到 PATH.

1
export PATH=/opt/otp/bin:$PATH

使用一下命令重载配置

1
source ~/.bashrc

升级

升级重新下载最新版即可 otp_src_xxx.tar.gz 以上步骤重新执行一遍


Window 下安装及环境配置

下载 http://www.erlang.org/download/otp_win64_18.2.1.exe

安装到一个目录 G:\Program Files\erl7.2.1\

添加 G:\Program Files\erl7.2.1\bin 到环境变量 PATH

重新打开终端 输入 erl 测试


###Erlang 开发工具

IntelliJ IDEA

安装插件 intellij-erlang ,Plugins 搜索 erlang


参考列表

http://ju.outofmemory.cn/entry/131329



错误分析

  • 运行 rebar 出现如下错误
1
2
3
4
5
Sun Dec 20 21:15:31 yzhang@coam:~/RunProject/ejabberd$ sudo ./rebar get-deps
/usr/bin/env: escript: No such file or directory

Sun Dec 20 21:22:50 yzhang@coam:~/RunProject$ whereis escript
escript: /opt/otp/bin/escript

原因是我安装 otp 时 使用命令 ./configure –prefix=/opt/otp/ 指定安装 otp 到 /opt/otp/ 下

于是重新安装 otp ,并取消 ~/.bashrc 中配置的 erlang 环境变量

1
2
# Erlang
#export PATH=/opt/otp/bin:$PATH

重启 ubuntu 后敲 erl 命令提示未找到,注释成功,重新使用默认参数安装otp

  • ejabberd 源码编译安装,执行命令 ejabberd ./configure 后出现如下错误
错误分析
1
2
3
4
5
6
7
8
Sun Dec 20 21:21:26 yzhang@coam:~/RunProject/ejabberd$ sudo ./configure
checking whether make sets $(MAKE)... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for a sed that does not truncate output... /bin/sed
checking for erl... no
checking for erlc... no
checking for erl... no
configure: error: Erlang/OTP interpreter (erl) not found but required

解决方案,重新安装 otp 到系统默认路径

参考

Why cannot escript run?



Erlang OTP18 API更新

1
/data/home/yzhang/CoamRunning/Erlang/ejabberd/deps/emysql/src/emysql_conn.erl:337: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information.

使用 erlang:timestamp() 代替 erlang:now()

erlang:now() deprecated in v18, what’s the best transition

Ubuntu Linux 服务器相关

Ubuntu 桌面安装

将 Ubuntu 安装到移动硬盘,可随时挂载使用

下载最新版 Ubuntu Desktop 版 Ubuntu.com
下载 Easybcd 系统引导 Easybcd

打开 Easybcd 选择 “NeoGrub”
NeoGrub.jpg
根据图示操作,以下是我的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# NeoSmart NeoGrub Bootloader Configuration File
#
# This is the NeoGrub configuration file, and should be located at C:\NST\menu.lst
# Please see the EasyBCD Documentation for information on how to create/modify entries:
# http://neosmart.net/wiki/display/EBCD/

title Install Ubuntu
root (hd0,0)
kernel (hd0,0)/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu-15.10-desktop-amd64.iso locale=zh_CN.UTF-8
initrd (hd0,0)/initrd.lz
title reboot
reboot
title halt
halt

使用压缩工具打开Ubuntu镜像文件,将”.disk”文件夹和casper文件夹内的”initrd.lz”和”vmlinuz.efi”文件复制到C盘根目录,再将Ubuntu系统镜像文件复制到C盘根目录
NeoGrub.jpg

成功进入Ubuntu试用界面后,桌面上有两个文件.
按Ctrl+Alt+T打开终端,输入”sudo umount –l /isodevice”,取消光盘驱动器挂载,否则在后面安装过程中可能会无限卡进度:

在”安装类型”界面会有多个安装选项

我们要将Ubuntu安装在”空闲”分区内.选择”空闲”分区,再点击左下方红线处的加号,进行分区.
关于Linux的分区挂载,很多带有定势思维的Windows用户还在理解的道路上艰难爬行,分区不是本文重点,此事应当阅读关于Linux分区的专业文章.
根目录”/“是必须存在的,可以分8G给”/“.
交换分区swap不是必须存在的,可以不给其分配空间,这同样意味着,你可以将所有空间分给”/“.
“/boot”不是必须存在的,如果你的硬盘是Ubuntu单系统,推荐为其分配空间,一般小于200M,并且将它设置为第一分区;如果你的硬盘不是单系统,而是像本文所述的双系统,不必分配空间.
“/home”用于保存用户的文件,如果你要向其中保存大量数据,需要分配较多空间.
“/usr” 主要用于保存应用程序文件,如果你要安装很多程序,需要分配较多空间.可以考虑为其分配最大空间.
分区时需要选择文件系统类型,选择”Ext4”即可.
注意:如果你的内存较小,交换分区大小应该超过物理内存大小,但要小于物理内存大小乘以2;如果你的内存足够大,交换分区分配1G到2G即可,甚至可以不分配.但如果你要安装一些强制需要交换分区的软件,则必须进行分配,如果你不确定以后安装的某款软件是否强制需要交换分区,最好进行分配,一般1G即可.

** 我提前在移动硬盘 sdb 划了两个分区,一个 200G 这里设定挂载 “/“ ,另一个 16G 这里设定 swap 分区

参考
Windows8.1硬盘安装Ubuntu14.04双系统参考教程及多硬盘注意事项
如何把ubuntu装到移动硬盘上的同时,可以达到:1. 个人电脑系统启动菜单中同时有电脑硬盘中的Windows7 和移动硬盘的ubuntu;2. 我把移动硬盘拿到其他电脑上可以加载我的移动硬盘的ubuntu系统?

ubuntu 12.10安装后需要做的那些事
安装Ubuntu 15.10后要做的事

Ubuntu

更改 Ubuntu 默认用户主目录

//默认用户 yzhang 主目录为 /home/yzhang ,需要统一更改为 /data/home/yzhang .按以下方法操作即可

http://askubuntu.com/questions/250862/properly-modify-home-dir

1
2
3
4
cd /data/home;
sudo mkdir yzhang
sudo chown yzhang:yzhang yzhang
//sudo usermod -d /data/home/yzhang -m yzhang

直接修改 ss /etc/passwd 用户主目录为 /data/home/yzhang

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

安装 Vim git

1
2
sudo apt-get install vim
sudo apt-get install git

Ubuntu 所有操作免输密码

1
sudo visudo

末尾添加一行

1
yzhang ALL=(ALL)NOPASSWD:ALL

参考 Ubuntu sudo 免输入密码

1
sudo apt-get install lnav

或者 Github 下载 tstack/lnav

1
2
3
$ ./configure
$ make
$ sudo make install

Run ./autogen.sh before running any of the above commands when compiling from a cloned repository.

可以运行如下命令查看日志

1
$ lnav /var/log/messages*

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

安装搜狗输入法

1:卸载fcitx

1
sudo apt-get --purge remove fcitx*

2:清理系统内的无用的软件包

1
sudo apt-get --purge autoremove

3:到搜狗官网下载搜狗拼音输入法,选择你系统对应的软件包,我系统是64位的,所以我选择了amd64的

http://pinyin.sogou.com/linux/?r=pinyin

4:用gdebi这个软件安装,它能够安装所有依赖关系,如果你没有安装gdebi,请先安装该软件;我用的是
这种方法,其它的方法我没试过,所以不知道行不行

1
sudo gdebi sogou_pinyin_linux_1.0.0.0014_amd64.deb

5:注销下系统就可以了

参考 ubuntu 14.04 x64 下完美安装搜狗拼音输入法

在 Ubuntu 下按教程安装好 sogou 输入法后却无法调出来,参考 在ubuntu下,把安装的中文输入法切换出来

×× 以下参考

先添加以下源

1
sudo add-apt-repository ppa:fcitx-team/nightly

更新一下系统

1
sudo apt-get update

开始安装fcitx

1
sudo apt-get install fcitx

安装fcitx的配置工具

1
sudo apt-get install fcitx-config-gtk

安装fcitx的table-all软件包

1
sudo apt-get install fcitx-table-all

最后安装im-switch切换工具

1
sudo apt-get install im-switch

一条快捷命令

1
sudo apt-get install fcitx fcitx-config-gtk fcitx-table-all im-switch

其实fcitx只是一个输入法工具,本身不带资源包的,可以搜索 Fcitx-Configuraton
打开查看输入法配置,默认还是没有 搜狗输入法

我们还需要下载 souguo deb 资源包 http://pinyin.sogou.com/linux/

1
sudo dpkg -i sogoupinyin_2.0.0.0068_amd64.deb

如果提示缺少依赖,可以按系统提示先执行以下命令再安装:

1
sudo apt-get install -f

注意:以上步骤安装完后需要注销一下

参考 Ubuntu下安装搜狗输入法

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

开发环境搭建

安装基础C/C++编译库

1
2
sudo apt-get install vim automake make perl gcc g++
sudo apt-get install bison g++-multilib git flex lzop gperf libxml2-utils zlib1g-dev

安装CMake和Qt Creator

CMake和Qt Creator是Linux下开发C++程序的神器,Ubuntu 15.04已经集成了最新版的Qt Creator (3.1.1)

1
sudo apt-get install cmake qtcreator

参考 Ubuntu 15.10 搭建Android系统编译环境

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

安装 Oracle Java

1
2
3
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

注意:由于系统自带的是OpenJDK,卸载OpenJDK之后会带有残留,导致运行

1
java -version

时第一行不是java的版本号,会是

1
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar

这个提示,导致很多检测java版本号的脚本会运行出错,因此需要手动清除残留.

1
sudo rm /usr/share/upstart/sessions/jayatana.conf

删除 /usr/share/upstart/sessions/jayatana.conf 文件,重启之后再运行 java -version 就不会再有 Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 提示了.

参考
安装Ubuntu 15.10后要做的事
Oracle Java (JDK) 7 / 8 / 9 Installer PPA

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

安装Sublime Text 3

1
2
3
sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text

>

登入官网:http://www.sublimetext.com/3

下载Ubuntu 64 bit 版本的,双击完成安装
注意:终端打开Sublime Text 3的方法是 在终端输入subl即可

注册码:

1
2
3
4
5
6
7
8
9
10
11
12
13
—– BEGIN LICENSE —–
Andrew Weber
Single User License
EA7E-855605
813A03DD 5E4AD9E6 6C0EEB94 BC99798F
942194A6 02396E98 E62C9979 4BB979FE
91424C9D A45400BF F6747D88 2FB88078
90F5CC94 1CDC92DC 8457107A F151657B
1D22E383 A997F016 42397640 33F41CFC
E1D0AE85 A0BBD039 0E9C8D55 E1B89D5D
5CDB7036 E56DE1C0 EFCC0840 650CD3A6
B98FC99C 8FAC73EE D2B95564 DF450523
—— END LICENSE ——

安装 Package Control

1
2
cd ~/.config/sublime-text-3/Packages/
git clone https://github.com/wbond/package_control_channel.git Package\ Control

参考
点滴记录——Ubuntu 14.04中安装Sublime Text 3并使用SublimeClang插件
Ubuntu 14.04 LTS 64位 安装激活Sublime Text 3及解决无法输入中文问题的解决方法

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

安装 Phpstrom

http://idea.lanyus.com/

建立项目软连接

1
2
sudo ln -s /media/yzhang/0000678400004823/DeveloperWorkspace/CoamServer/ ~/CoamServer
sudo ln -s /media/yzhang/0000678400004823/DeveloperWorkspace/ ~/DeveloperWorkspace

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

Ubuntu 安装 ShadowSocks 客户端代理翻墙

安装linux客户端

shadowsocks-gui 得知,linux客户端是 shadowsocks-qt5 ,居然还提供中文版本的安装指南 .赞一个!

按照安装指南,执行安装:

1
2
3
sudo add-apt-repository ppa:hzwhuang/ss-qt5
sudo apt-get update
sudo apt-get install shadowsocks-qt5

安装完成后,执行命令启动:

1
ss-qt5

图形界面上可以找到shadowsocks-qt5的图标,或者gnome do之类的工具也可以.

启动后配置和windows版本类似,区别于 Window 客户端,代理模式改 http 模式为 sock 模式

Chrome 上安装的代理翻墙插件 FelisCatus/SwitchyOmega

参考
使用shadowsocks实现科学上网
ShadowSocks安装指南
使用Digital Ocean和shadowsocks来科学上网

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

KSnapshot 截屏工具

系统默认 Alt + Print Screen 快捷键默认只允许截取整张屏幕

1
$ sudo apt-get install ksnapshot

创建 root 用户登陆密码

1
sudo passwd root

默认 root 用户新建后,不能通过桌面登陆 root 账户,还需要修改以下地方

1
2
3
4
5
sudo vi /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

[Seat:*]
user-session=ubuntu
greeter-show-manual-login=true

重新登陆即可

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

删除Amazon的链接

1
sudo apt-get remove unity-webapps-common

删掉基本不用的自带软件(用的时候再装也来得及)

1
2
3
4
sudo apt-get remove thunderbird totem rhythmbox empathy brasero simple-scan gnome-mahjongg aisleriot \
gnome-mines cheese transmission-common gnome-orca webbrowser-app gnome-sudoku landscape-client-ui-install

sudo apt-get remove onboard deja-dup

这样系统就基本上干净了.

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

Ubuntu 14.04 标题栏实时显示上下行网速. CPU及内存

先当然是用wget下载 indicator-sysmonitor

wget https://launchpadlibrarian.net/139475561/indicator-sysmonitor_0.4.3_all.deb

下载好后,先不要急于安装,因为软件有些依赖关系还没解决.终端执行安装依赖:

1
2
sudo apt-get install python python-psutil python-appindicator 
sudo apt-get install python-gtk2

安装 indicator-sysmonitor

1
sudo dpkg -i indicator-sysmonitor_0.4.3_all.deb

安装完成后便可以搜索 System Monitor 启动监控界面了,但默认只能显示内存和CPU使用情况,想要显示上下行网速的情况还要如下操作:

1
2
sudo apt-get install dstat
sudo apt-get install acpi

下载脚本

1
2
$ mkdir -p ~/.scripts && cd ~/.scripts
$ wget http://webupd8.googlecode.com/files/sysmon_0.2.tar.gz && tar -xvf sysmon_0.2.tar.gz

可在scripts目录下得到sysmon脚本,设置System Monitor,让它使用脚本里的配置.
下面 Alt+F2 或终端中 运行indicator-sysmonitor.在工具栏点击Indicator-Sysmonitor 并选择 “首选项” ,
选择Advanced,然后新建一个senor,在command处输入$HOME/.scripts/sysmon,
在General中勾选”Run on startup” 后保存退出

参考:
让Indicator-Sysmonitor在顶部面板显示上下行网速及CPU温度
ubuntu 12.10安装后需要做的那些事

Glances 监控系统

Glances

1
2
$ sudo apt-get install glances
$ glances

借助Glances Monitor,密切关注你的系统

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

failed to start session

Fix “Failed To Start Session” At Login In Ubuntu 14.04

Ctrl + Alt + F1

When you are at login, press Ctrl+Alt+F1. It will take you to command line interface from the GUI. In here, type your username and password. Now, you can try the following command to install Unity Desktop:

1
sudo apt-get install ubuntu-desktop

If it is already installed, try reinstalling:

1
sudo apt-get install --reinstall ubuntu-desktop

Once it is installed or reinstalled. Use the following command to reboot the system:

1
sudo reboot

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

海南省医疗旅游联盟合作策划书

一. 医疗旅游的现状

推广医疗旅游大多数是医疗发达国家,他们都各自享誉世界的品牌,比如瑞士的羊胎素注射. 德国的干细胞应用究. 日本的癌症早期筛查. 韩国的整形美容等.且每年中国有50多万人出国治疗肿瘤.
在中国,推广这个项目的医疗机构大多是台湾,相比之下,大陆的医疗旅游市场发展并不理想.事实上,上海. 海南. 云南. 甘肃. 北京等地都有加大医疗旅游发展力度的想法.
上海和北京均在郊县建设高端医疗园区,但始终不见成效.有评论认为,旅游都有共性,差别在于医疗.中国有限的优质医疗资源过于集中在公立医院,高端医疗资源供给不足限制了医疗旅游产业发展.

引起现状的原因,问题

  • 1.价格偏高,上万元的医疗旅游产品只能针对小群体推广.建发国际旅行社表示:目前各大旅行社对医疗旅游都是采用高端定制的方式.
  • 2.专业程度高.春秋国际旅行社表示,体检对于旅游行业的员工来说缺乏健康专业知识,对旅客少了专业的引导.
  • 3.医疗旅游线路研发成本高,对于中低端客户不容易接受, 中高端客户对于国内的医疗品质的不信任,一般都会选择出国体检.业者缺乏足够的信心.以上原因导致很多旅行社推广体检旅游的动力不足.

解决方法

现在主要缺乏这种模式和领导者,我希望我们体检中心是海南的先行推动者. 先行者,将休闲旅游和健康服务完美结合运用,将我们优质的医疗资源和旅游服务整合起来推荐给国人.
首先需要得到政府的认可和支持:省政府领导听取本计划方案后高度肯定,发展海南得天独厚的旅游优势,让旅行社. 海南政府人民共同获利.这个项目就像左右手,谁也离不开谁.
我们可以利用我们的优势,做海南的先行者.依靠我们医院的强大实力. 专家. 和对肿瘤的专业性抢占这块市场,让中国人在自己的国家享受体检和治疗.

二.医疗旅游的前景与优势

前景
2015年12月25日国家旅游局发布旅游业占全球GDP10%,占就业总量9.5%.中国国内旅游. 出境旅游人数和国内旅游消费. 境外旅游消费均列世界第一.博鳌亚洲论坛2011年年会发布报告称,亚洲已经成为全球最富潜力的医疗旅游服务市场.随着人民生活水平的进一步提高,对于健康养生的相关需求也在快速增长.最近显示,有62%的受访者表示出了对健康旅游的兴趣.医疗旅游针对的市场是部分有较高经济能力的中高端客人,这一部分人在健康方面有较高投入,并且有较强的保健意识,针对这些,医疗旅游市场还是非常有潜力的.数据显示,内陆客人医疗旅游的概念比较模糊,医疗旅游意识也相对淡薄.目前而言上海是主要客源地.相关业内人士,预计未来十年上海市场的医疗旅游市场规模将逐步扩张,但是因为全球范围内顶级医疗资源的有限性,因此预估增长不会太快.业内人士表示,虽然医疗旅游市场尚不成熟,信息不透明. 代理机构鱼龙混杂,但是从长远来看,”医疗旅游”市场前景巨大,潜力无限.
优势
竟能享受愉快的旅游时光,让自己的心灵享受最放松的状况,又能让自己的身体做一次愉快的旅行.给自己的身体放个假,在检查的过程中不紧张,不忧虑.了解自己身体的状态.让自己在未来的一年甚至下半辈子得到实实在在的全身心的放松..”不仅能欣赏美景. 放松身心,还能为身体做个检查,一举多得.

三. 合作的目的

  1. 共同发展合作医疗和旅游行业,为海南的经济腾飞插上腾飞的翅膀.
  2. 把海南的医疗旅游行业在最短的时间内,带到全中国,然后感染全世界,让海南成为中国唯一的医疗旅游目的地.
  3. 让来到海南岛的人不仅享受旅游,还能收获健康,让中国人不出国就能享受最好的医疗服务和最好的医疗资源.
  4. 根据市场研究表明,美国的肿瘤筛查分析,因为易感基因检测,癌症发病率下降了70%,所以为全国人民带来健康,我们已早期癌症筛查为目的,使全国人民的癌症等发病率降低到最低点,使全国人民正确的防癌,抗癌,使全国乃至全世界的人民的健康在旅游的带领下达到最高峰.

四. 发展方向目标

    1. 目标为中国国人,和二线国家的人群. 比如俄罗斯. 东南亚市场.
    1. 重心可放在中年人身上,这部分的人年龄分别在35岁至55岁,事业高峰期,都处于公司中高管,家庭条件比较优越,同样也属于亚健康高发年龄段.根据有关体检医疗分析,这类人注重追求医疗质量. 技术,以及高质量的服务,这部分人子女大部分不在身边,大部分在外求学或以刚结婚,处于空巢期和失落期,会去旅游满足自己心理的需求,也对自身的身体状况也比较重视.体检游套餐价格可以定制中高端.这个年龄的阶段都在工作,此宣传可以放在国庆长假,年假等节假日.
    1. 随着人口老龄化的严重性,也是给我们一个很好的机会,老年身上大大小小的都有些小毛病,不像年轻人,也很怕生病,我们可以在冬季大力和旅行社合作推广这个活动,价格定在中端为宜,老年人消费能力弱,可好在冬季我们海南岛拥有独特的优势,也成了很多人尽孝的好时机,让父母在寒冷的冬季过来度个假,检查一下身体,为父母解忧,天时地利人和.这个可以放在第二个重心.
  • 4.其次,放在年轻人,大部分消费能力有限,体检游价格定在中低端,可以开发一些婚前体检,白领套餐等….

五. 合作模式

    1. 旅行社和我院体检中心合作
    1. 旅行社和医疗部门
    1. 旅行社和我院的医生
    1. 旅行社与我院签署战略框架协议

六. 合作具体措施

(一)旅行社和海南省肿瘤医院体检中心合作

1. 我院提供体 检前 检中 检后的VIP服务模式.

(1)检前预约. 咨询等服务
(2)检中VIP一条龙特殊通道等服务
(3)检后 健康跟踪等服务.

2. 以健康检查为主要方向

(1)从健康肿瘤筛查为重点推广对象,可分为周期性肿瘤筛查,基因检测,循环肿瘤检测. 早期肿瘤筛查,心血管疾病,宫颈癌,乳腺癌. 肺癌等肿瘤筛查体检项目.
(2)针对不同人群,年龄. 行业. 为旅游者来制定不同的体检项目.

3. 住院体检的实施:入院进行体检,全天候VIP服务模式,让体检者在最舒适的状态下完成体检.
4. 终身健康顾问,和档案管理,肿瘤观察管理等服务方式,让每一个人的档案具有完整跟踪性.我们中心健康评估的重点要不在于检测,而在于与体验医师的交流.包括营养服务和压力管理咨询等.体检结束后,也要让游客感觉到不须此行.

(二)旅行社和海南省肿瘤医院医疗部门合作

借据海南省天时地利人和的优势,让省外人边享受大自然赐给我们最天然的环境,已最放松的状态去接受疾病的治疗,用乐观的心态去看病,使疾病达到最佳治疗状态.(三)旅行社和海南省肿瘤医院专家资源合作

    1. 开展肿瘤筛查宣传日,让全国所有的癌症患者来到海南省,在我院专家的帮助下,共同对抗癌症,和享受大自然的环境.
    1. 专家开展课程,帮助全世界的人民一起防癌,抗癌.

(四)旅行社与海南省肿瘤医院签署战略框架协议;

经双方沟通协商后,达成一致合作,旅行社与海南省肿瘤医院签署战略框架协议,为后期双方更好的合作. 宣传. 发展奠定基础.

七. 实施计划及方案

海南省肿瘤医院拟共享本院有特色的医疗服务资源,与各大旅行社开展医疗服务项目的推广和合作,细分市场,开创创新性的医疗服务新模式.
各有意向合作的旅行社依据各自的客户群体. 地区政策及医疗推广等优势进行考察. 研究. 策划,然后出具具有创新性(独创)方案及可行性的合作模式.
本院对各大旅游集团方案进行可行性研究,筛选出优秀的合作方案并进行初期市场验证,形成行之有效并且与之单独的长期合作的可持续发展模式,然后在根据各行业的市场策划和区域等优势,确定合作的深度和广度,在进行细分化,从而规划市场的统一性,从而保证保证市场的的规则性和公平性,
也为了更好的规范海南医疗旅游市场.

八. 效果预估

九. 目前的问题

  • 1.医疗保险体制问题
  • 2.国际认证问题
  • 3.医疗旅游工作管理策划团队问题
  • 4.行业的保护性问题
  • 5.行业区分,和返点的问题.
  • 6.税务问题

计划及谈判内容:

海南省肿瘤医院被列入海南省”十二五”重点医疗规划和省市共建重点项目. 2015年省委省政府为民办实事十大重点项目,是非营利性的民营医院, 特殊医疗服务有肿瘤防治,国际医疗转诊.不管是医院设计,规模,专家,检验医疗设备等等,都是最独特先进优秀的,填补了海南省的空缺,我们以专科医院在筛查,治疗和肿瘤防治上是目前是海南省最专业的专科医院.
可以利用医院的环境,专家等强大背景做宣传.主打一个主角做我们的专长特色,利用我们的肿瘤专业,可以用早期癌症筛查和宣教一系列套餐做招牌,这块主要精力放在中老年,以这个为主,其它的为辅.旅客可根据自身的需求选择体检套餐,比如老年人,年轻人,糖尿病,冠心病…….,价格分几百到几万不等,根据自己的身体需求和经济条件进行选择.
冬天:以老人的常见疾病为主题进行宣传引导.

  • 1.旅行社负责客源和宣传,我们负责体检,车,食,住宿.合作期间我们任何时间和地点都可以负责服务和医疗技术支持:关于医疗上的问题,员工的健康问题,导游的业务上的培训,等等问题.旅游线路,和整体套餐价格由旅行社制定,我们体检价格原价给旅行社.以分成的形式结算.
    2017年可把全海南省旅行社的任务量定在100万,下发每一家合作旅行社任务量,一年如完成20万及以下的指标给2成利润,20万以上3成利润.
    福利:如完成合同量,免费定期停供员工的体检,培训,也可共同制作体检游的策划营销方案.

  • 2.我们的vip体检客户办卡赠送旅游套餐.充值Vip卡比如满1万送3天一夜旅游…..
    找外省的大型公司,国企,政府部门推广体检送旅游的活动,对象也可扩展到员工的家属,家人,情侣,等.车,机票,住宿,我们负责然后跟当地的旅游公司详细制定旅游线路并给予旅游公司一定的服务报酬.

  • 3.跟海南各航天公司合作,让他们制定广告,如机票广告,机场条幅,官网,等进行体检游的广告宣传.谈判内容:他们一年中赠送我们免费机票,我们提供他们员工体检.互惠互利.谈判成功,制定合同.
    采用健检游路线和采用治疗旅游:以旅游观光. 健康检查. 为主要内容.能享受和参观到全海南最专业的医院体检和治疗服务.

对旅行社的好处:可采用员工积分制:带团人数,或者金额超过多少,可提高员工工作的积极性,可免费提供员工定期体检,也可让员工的家人免费体检,体检游不仅让旅行社获利.更让员工身体健康也兼顾家庭,通过宣传更可提高旅行社的知名度和业绩等等…..

市场分布

海南省有将近1000家左右的旅行社,可逐一推荐,分别是(如下图所示)

有旅游景点的
1.三亚2.五指山3.乐东4.保亭5.陵水6.三沙
7.文昌 8.定安 9 琼海 10万宁 11 炖昌 12 琼中 13 杨浦
14临高 15昌江 16儋州 17 澄迈 18东方19 昌江20 海口市区
以上地区均有旅游优美的旅游景点

LinuxCommand

Linux最常用的几个命令

  • chmod命令 #后就是这个命令的说明
1
2
chmod +x /home/auto.sh # 赋予 auto.sh 可执行权限
chmod -R 777 /home/wwwroot # 赋予 /home/wwwroot 写入权限(部分网站程序安装时需要用到)
  • rm命令 删除文件
1
2
rm test.tar.gz # 删除test.tar.gz,会有提示你确认 y即可
rm -rf /home/wwwroot/test # 无提示直接删除test目录,勿乱用,切记.
  • tar命令 C打包和X解压文件
1
2
tar zcvf test.tar.gz /home/wwwroot #把/home/wwwroot打包
tar zxvf tet.tar.gz # 在当前目录解压test.tar.gz
  • zip 打包命令 unzip解压文件
1
2
zip -r tester.zip /home/wwwroot #把/home/wwwroot打包
unzip teter.zip # 在当前目录解压test.tar.gz
  • Linux SSH远程传输命令 scp

一. scp 的用处

如果你有几台云主机,而阿里是支持内网传输的,并且不限制带宽,正常传输文件的速度能达到35m~50m/s,这个时候我们就可以使用内网,在几台云主机之间传输命令,只要把域名处,换成内网IP即可.使用的命令是scp,这个命令linux内置,本机和目标机,只要支持ssh,无须安装设置任何软件.

  1. 获取远程服务器上的文件
1
scp -P 2222 root@www.legcloud.com:/root/test.tar.gz /home/test.tar.gz

上端口大写P 为参数,2222 表示更改SSH端口后的端口,如果没有更改SSH端口可以不用添加该参数. root@www.legcloud.com 表示使用root用户登录远程服务器www.legcloud.com,:/root/test.tar.gz 表示远程服务器上的文件,最后面的/home/test.tar.gz表示保存在本地上的路径和文件名.

  1. 获取远程服务器上的目录
1
scp -P 2222 -r root@www.legcloud.com:/root/dirname/ /home/dirname/
  1. 将本地文件上传到服务器上
1
scp -P 2222 /home/test.tar.gz root@www.legcloud.com:/root/test.tar.gz
  1. 将本地目录上传到服务器上
1
scp -P 2222 -r /home/dirname/ root@www.legcloud.com:/root/dirname/

Linux SSH远程传输命令 scp

  • 使用 iftop 查看实时使用带宽
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 如果你是 centos 系统,执行:

yum install iftop

# 如果你是 debian/ubuntu 系统,执行:

apt-get install iftop

# 使用 ifconfig ,查看所有网络配置,使用 -i 参数选择相关网络.

ifconfig

# 阿里云默认的 iftop ,执行查看的是第一个,即内网的IP,以下二个命令效果相同

iftop
iftop -i eth0

# 如果查看外网带宽,则需要选择外网配置的eth,默认命令

iftop -i eth1

MysqlSyncNote

Mysql双机热备份

Mysql 主从同步配置

概述 首先主服务器把数据变化记录到主日志,然后从服务器通过I/O线程读取主服务器上的主日志,并且把它写入到从服务器的中继日志中,接着SQL线程读取中继日志,并且在从服务器上重放,从而实现MySQL复制.具体如下图所示:

replication

整个过程反映到从服务器上,对应三套日志信息,可在从服务器上用如下命令查看:

1
mysql> SHOW SLAVE STATUS;
Master_Log_File & Read_Master_Log_Pos:下一个传输的主日志信息.
Relay_Master_Log_File & Exec_Master_Log_Pos:下一个执行的主日志信息.
Relay_Log_File & Relay_Log_Pos:下一个执行的中继日志信息.

理解这些日志信息的含义对于解决故障至关重要

两台服务器搭建Mysql双机热备份 mysql 版本最好一致


一. A主B从

  • 主服务器 A: 43.241.222.110
  • 从服务器 B: 42.96.194.60

在主A服务器(master)下创建给从B服务器 (slave)登录用的用户名密码

1
GRANT REPLICATION SLAVE ON *.* TO 'syBackup'@'42.96.194.60' IDENTIFIED BY '******';
  1. 设置主服务器 A 需要复制的数据库
    打开主服务器 A 的Mysql配置文件 /etc/mysql/my.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#################################################
server-id=1 #主机id,整数
#开启二进制日志,并且名称为 /var/lib/mysql/mysql-bin.***
# 如果是个路径则,保存到该路径下(log-bin=/var/log/mysql-bin.log -> /var/log/mysql-bin.***)
log-bin=mysql-bin

### as master ###
read-only=0 #主机读写权限,读写都可以

binlog-do-db=CoamDatabase #记录日志的数据库:需要的备份数据,多个写多行
binlog-do-db=CoamInfo
binlog-do-db=CoamSNS
binlog-do-db=form
binlog-do-db=CommonData
binlog-do-db=Wordpress
binlog-do-db=IM_Ejabberd

binlog-ignore-db=mysql #不记录日志的数据库:不需要备份的数据库,多个写多行
binlog-ignore-db=test
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema

# 自增字段奇数递增,防止冲突(1, 11, 21, ...,)
auto-increment-increment = 10 # 每次递增的步长
auto-increment-offset = 1 # 初始值

### as slave ###
###
###############################################################

重启 Mysql 是配置生效,可以看到主(43.241.222.110) Mysql 增加了两个文件 mysql-bin.000001 和 mysql-bin.index

1
2
3
4
5
6
7
8
9
10
11
12
Tue May 17 10:31:52 yzhang@coam:/data/home/data/mysql$ ls
auto.cnf client-key.pem coam.pid ib_buffer_pool ibtmp1 performance_schema server-key.pem
ca-key.pem CoamDatabase CoamSNS ibdata1 IM_Ejabberd private_key.pem sys
ca.pem coam.err CommonData ib_logfile0 mysql public_key.pem test
client-cert.pem CoamInfo forum ib_logfile1 mysqld_safe.pid server-cert.pem Wordpress
Tue May 17 10:31:52 yzhang@coam:/data/home/data/mysql$ sudo service mysql restart ======> 重启 Mysql 数据库服务
Tue May 17 10:31:52 yzhang@coam:/data/home/data/mysql$ ls
auto.cnf CoamDatabase CommonData ib_logfile1 mysql-bin.000002 performance_schema sys
ca-key.pem coam.err forum ibtmp1 mysql-bin.000003 private_key.pem test
ca.pem CoamInfo ib_buffer_pool IM_Ejabberd mysql-bin.000004 public_key.pem Wordpress
client-cert.pem coam.pid ibdata1 mysql mysql-bin.index server-cert.pem
client-key.pem CoamSNS ib_logfile0 mysql-bin.000001 mysqld_safe.pid server-key.pem

– 注意,这里因为配置有问题重启过几次 mysql 导致生成 [mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 mysql-bin.000004] 等几个文件,不过不影响后续步骤执行

先锁定 (hello) 数据库 - 不要退出 mysql shell

1
mysql> FLUSH TABLES WITH READ LOCK;

然后新开一个终端,导出数据库,我这里只需要导出 hello 数据库, 如果你有多个数据库作为初态的话, 需要导出所有这些数据库:( 这里为了便于测试,我先不导出 forum 数据库,后续测试单独补加同步数据库)

1
2
mysqldump --master-data -uroot -p hello > hello.sql
mysqldump -u username -p password --databases CoamDatabase CoamInfo CoamSNS CommonData Wordpress IM_Ejabberd >backup.sql

查看主服务器的状态

1
2
3
4
5
6
7
8
9
10
11
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000005
Position: 154
Binlog_Do_DB: CoamDatabase,CoamInfo,CoamSNS,forum,CommonData,Wordpress,IM_Ejabberd
Binlog_Ignore_DB: mysql,test,information_schema,performance_schema
Executed_Gtid_Set:
1 row in set (0.00 sec)

ERROR:
No query specified

然后查看A服务器的 binary 日志位置,记下 Position 和 File 的值.

主服务器已经做完了, 可以解除锁定了

1
UNLOCK TABLES;
  1. 设置从服务器 B 需要复制的数据库
    打开从服务器 B 的 Mysql 配置文件 /etc/mysql/my.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[mysqld]

####################################################################
server-id=2
log-bin=mysql-bin

### as master ###
### as slave ###
replicate-do-db=CoamDatabase #只复制某个库,多个写多行
replicate-do-db=CoamInfo
replicate-do-db=CoamSNS
replicate-do-db=form
replicate-do-db=CommonData
replicate-do-db=Wordpress
replicate-do-db=IM_Ejabberd

replicate-ignore-db=mysql #不复制某个库
replicate-ignore-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

relay-log=mysqld-relay-bin # 开启日志中继
log-slave-updates # slave 将复制事件写进自己的二进制日志
#5.5
#log-slave-updates = ON
#5.1
#log-slave-updates = 1
###############################################################

重启 Mysql 是配置生效,可以看到从(42.96.194.60) Mysql 也相应的增加了两个文件 mysql-bin.000001 和 mysql-bin.index

1
2
3
4
5
6
7
8
9
Tue May 17 11:07:14 yzhang@coam:/data/home/data/mysql$ ls
auto.cnf client-cert.pem coam.pid ib_logfile0 mysql private_key.pem server-key.pem
ca-key.pem client-key.pem ib_buffer_pool ib_logfile1 mysqld_safe.pid public_key.pem sys
ca.pem coam.err ibdata1 ibtmp1 performance_schema server-cert.pem
Tue May 17 10:31:52 yzhang@coam:/data/home/data/mysql$ sudo service mysql restart ======> 重启 Mysql 数据库服务
Tue May 17 11:08:40 yzhang@coam:/data/home/data/mysql$ ls
auto.cnf client-cert.pem coam.pid ib_logfile0 mysql mysqld_safe.pid public_key.pem sys
ca-key.pem client-key.pem ib_buffer_pool ib_logfile1 mysql-bin.000001 performance_schema server-cert.pem
ca.pem coam.err ibdata1 ibtmp1 mysql-bin.index private_key.pem server-key.pem

导入从主服务器导出的数据库 hello,然后

导入 master 导出的数据库:

分别创建需要导入的数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysql> CREATE DATABASE CoamDatabase DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE CoamInfo DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE CoamSNS DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE CommonData DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE Wordpress DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE IM_Ejabberd DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

mysql> source backup.sql;

# 以下方式分别导入数据库
mysql -uroot -p CoamDatabase < backup.sql
mysql -uroot -p CoamInfo < backup.sql
mysql -uroot -p CoamSNS < backup.sql
mysql -uroot -p CommonData < backup.sql
mysql -uroot -p Wordpress < backup.sql
mysql -uroot -p IM_Ejabberd < backup.sql
  1. 在从 slave 服务器配置连接 master 信息:
1
2
3
4
5
6
7
8
9
10
mysql> slave stop;
mysql> CHANGE MASTER TO
-> MASTER_HOST='43.241.222.110', //主服务器的IP地址
-> MASTER_USER='syBackup', //同步数据库的用户
-> MASTER_PASSWORD='******', //同步数据库的密码
-> MASTER_CONNECT_RETRY=60, // 如果从服务器发现主服务器断掉,重新连接的时间差(秒)
-> MASTER_LOG_FILE='mysql-bin.000001', //主服务器二进制日志的文件名(前面要求记住的 File 参数)
-> MASTER_LOG_POS=98; //日志文件的开始位置(前面要求记住的 Position 参数)
mysql> CHANGE MASTER TO MASTER_HOST='43.241.222.110', MASTER_USER='syBackup', MASTER_PASSWORD='******', MASTER_CONNECT_RETRY=60, MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=154;
mysql > slave start;

重启 master, slave:

1
service mysqld restart

查看 slave 状态:

进入从服务器 slave mysql:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Connecting to master
Master_Host: 43.241.222.110
Master_User: syBackup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 98
Relay_Log_File: mysqld-relay-bin.000001
Relay_Log_Pos: 98
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: CoamDatabase,CoamInfo,CoamSNS,form,CommonData,Wordpress,IM_Ejabberd
Replicate_Ignore_DB: mysql,test,information_schema,performance_schema,collie,ding,inotseeyou_com,pi
wik,trac,wzjp_net
Exec_Master_Log_Pos: 98
Relay_Log_Space: 98
Until_Log_Pos: 0
Seconds_Behind_Master: NULL
1 row in set (0.00 sec)

注意一定要有下面两项(IO线程和SQL线程),没有的话查看错误日志(less /var/log/mysqld.log):

1
2
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

如果显示这个状态 则稍等一会儿

1
Slave_IO_State: Waiting for master to send event

测试 master 服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> use hello;
Database changed
mysql> create table test(id int);
mysql> insert int test set id=1;

mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000002 # 注意这里
Position: 276 # 注意这里
Binlog_Do_DB:
CoamDatabase,CoamInfo,CoamSNS,form,CommonData,Wordpress,IM_Ejabberd
Binlog_Ignore_DB: mysql,test,information_schema,performance_schema,collie,ding,inotseeyou_com,pi
wik,trac,wzjp_net

1 row in set (0.00 sec)

测试 slave 服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
mysql> use hello;
mysql> show tables;
+-----------------+
| Tables_in_hello |
+-----------------+
| test |
+-----------------+
1 row in set (0.00 sec)

mysql> select * from test;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)

mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 43.241.222.110
Master_User: syBackup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002 # 跟 master 一样
Read_Master_Log_Pos: 276 # 跟 master 一样
Relay_Log_File: mysqld-relay-bin.000003
Relay_Log_Pos: 413
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: CoamDatabase,CoamInfo,CoamSNS,form,CommonData,Wordpress,IM_Ejabberd
Replicate_Ignore_DB: mysql,test,information_schema,performance_schema,collie,ding,inotseeyou_com,pi
wik,trac,wzjp_net
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 276
Relay_Log_Space: 413
Seconds_Behind_Master: 0
1 row in set (0.00 sec)

主A服务器从B服务器配置就已经顺利完成了 –A从B主


二. 下面开始配置从A服务器主B服务器

  • 从服务器 A: 43.241.222.110
  • 主服务器 B: 42.96.194.60

一、设置主服务器 A 需要复制的数据库
打开主服务器 B 的 Mysql 配置文件 /etc/mysql/my.cnf 并添加以下配置项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
###############################################################
server-id=2
log-bin=mysql-bin

### as master ###
read-only=0 #主机读写权限,读写都可

binlog-do-db=CoamDatabase #记录日志的数据库:需要的备份数据,多个写多行
binlog-do-db=CoamInfo
binlog-do-db=CoamSNS
binlog-do-db=form
binlog-do-db=CommonData
binlog-do-db=Wordpress
binlog-do-db=IM_Ejabberd

binlog-ignore-db=mysql #不记录日志的数据库:不需要备份的数据库,多个写多行
binlog-ignore-db=test
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema

# 自增字段奇数递增,防止冲突(1, 3, 5, ...,)
auto-increment-increment = 10 # 每次递增的步长
auto-increment-offset = 2 # 初始值
### as slave ###
# 之前配置过,这里保持不变
#######################################################################

重启 mysql:

1
serivce mysqld restart

在主 B 服务器(master)下创建给从A服务器 (slave)登录用的用户名密码

1
2
3
4
5
6
7
8
9
10
11
mysql> GRANT REPLICATION SLAVE ON *.* TO 'syBackup'@'43.241.222.110' IDENTIFIED BY '******';
mysql> FLUSH TABLES WITH READ LOCK;
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000003
Position: 468
Binlog_Do_DB: CoamDatabase,CoamInfo,CoamSNS,forum,CommonData,Wordpress,IM_Ejabberd
Binlog_Ignore_DB: mysql,test,information_schema,performance_schema
Executed_Gtid_Set:
1 row in set (0.01 sec)
mysql> UNLOCK TABLES;

在从服务器 A 的服务器配置登陆主服务器 B 中创建的复制用户登陆

1
2
3
mysql> slave stop;
mysql> CHANGE MASTER TO MASTER_HOST='42.96.194.60', MASTER_USER='syBackup', MASTER_PASSWORD='yafei312', MASTER_CONNECT_RETRY=60, MASTER_LOG_FILE='mysql-bin.000004, MASTER_LOG_POS=46702';
mysql> slave start;

修改从服务器A的 Mysql 配置文件 /etc/mysql/my.cnf 从配置信息

打开从服务器 A 的 Mysql 配置文件 /etc/mysql/my.cnf 并添加以下配置项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
### as master ###

### as slave ###
replicate-do-db=CoamDatabase #只复制某个库,多个写多行
replicate-do-db=CoamInfo
replicate-do-db=CoamSNS
replicate-do-db=form
replicate-do-db=CommonData
replicate-do-db=Wordpress
replicate-do-db=IM_Ejabberd

replicate-ignore-db=mysql #不复制某个库
replicate-ignore-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

relay-log=mysqld-relay-bin # 开启日志中继
log-slave-updates # slave将复制事件写进自己的二进制日志
######################################################################

重启主服务器A、B并测试插入测试更新数据

从 A 服务器 43.241.222.110

1
mysql> show slave status\G;

最后的 A 服务器 配置文件 /etc/mysql/my.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#######################################################
server-id=1 #主机id,整数
#开启二进制日志,并且名称为 /var/lib/mysql/mysql-bin.***
# 如果是个路径则,保存到该路径下(log-bin=/var/log/mysql-bin.log -> /var/log/mysql-bin.***)
log-bin=mysql-bin

### as master ###
read-only=0 #主机读写权限,读写都可以

binlog-do-db=CoamDatabase #记录日志的数据库:需要的备份数据,多个写多行
binlog-do-db=CoamInfo
binlog-do-db=CoamSNS
binlog-do-db=form
binlog-do-db=CommonData
binlog-do-db=Wordpress
binlog-do-db=IM_Ejabberd

binlog-ignore-db=mysql #不记录日志的数据库:不需要备份的数据库,多个写多行
binlog-ignore-db=test
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema

# 自增字段奇数递增,防止冲突(1, 11, 21, ...,)
auto-increment-increment = 10 # 每次递增的步长
auto-increment-offset = 1 # 初始值

### as slave ###
replicate-do-db=CoamDatabase #只复制某个库,多个写多行
replicate-do-db=CoamInfo
replicate-do-db=CoamSNS
replicate-do-db=form
replicate-do-db=CommonData
replicate-do-db=Wordpress
replicate-do-db=IM_Ejabberd

replicate-ignore-db=mysql #不复制某个库
replicate-ignore-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

relay-log=mysqld-relay-bin # 开启日志中继
log-slave-updates # slave将复制事件写进自己的二进制日志
#5.5
#log-slave-updates = ON
#5.1
#log-slave-updates = 1
#######################################################

最后的 B 服务器配置文件 /etc/mysql/my.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
###############################################################
server-id=2
log-bin=mysql-bin

### as master ###
read-only=0 #主机读写权限,读写都可以

binlog-do-db=CoamDatabase #记录日志的数据库:需要的备份数据,多个写多行
binlog-do-db=CoamInfo
binlog-do-db=CoamSNS
binlog-do-db=form
binlog-do-db=CommonData
binlog-do-db=Wordpress
binlog-do-db=IM_Ejabberd

binlog-ignore-db=mysql #不记录日志的数据库:不需要备份的数据库,多个写多行
binlog-ignore-db=test
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema

# 自增字段奇数递增,防止冲突(2, 12, 22, ...,)
auto-increment-increment = 10 # 每次递增的步长
auto-increment-offset = 2 # 初始值
### as slave ###
replicate-do-db=CoamDatabase #只复制某个库,多个写多行
replicate-do-db=CoamInfo
replicate-do-db=CoamSNS
replicate-do-db=form
replicate-do-db=CommonData
replicate-do-db=Wordpress
replicate-do-db=IM_Ejabberd

replicate-ignore-db=mysql #不复制某个库
replicate-ignore-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema

relay-log=mysqld-relay-bin # 开启日志中继
log-slave-updates # slave将复制事件写进自己的二进制日志
#5.5
#log-slave-updates = ON
#5.1
#log-slave-updates = 1
###############################################################

其它

  1. 安装MySQL.首先要在两台服务器上安装MySQL,完成之后应该确认能否两台服务器能否互相访问. 这是因为缺省的 my.cnf 设置有 bind-address = 127.0.0.1,这条语句应该被注释掉.
  2. 创建账号.数据库中缺省的帐户的host值是localhost,所以应该创建一个可以远端访问的帐号.比如:

root@’%’ or root@10.x.x.x


Mysql双机热备份日常维护及问题分析

MysqlNote

  • 刚安装完 php5-fpm mysql 使用 phpMyAdmin 登陆提示如下错误
1
#2002 - Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) — The server is not responding (or the local server's socket is not correctly configured).
  • 因为使用源码编译安装的 mysql 5.7 的默认配置文件 /etc/mysql/my.cnf 没有 [client] 这一段配置.而默认的 mysql sock 位置为 /var/run/mysqld/mysqld.sock
  1. 首先找到所有的 socket 文件:
1
2
3
4
5
yzhang@coam:~$ sudo find / -type s
/tmp/mongodb-27017.sock
/tmp/mysql/mysql.sock
/run/fail2ban/fail2ban.sock
...

所以手动 /etc/mysql/my.cnf 添加这一行:

1
2
[client]
socket=/tmp/mysql/mysql.sock <= this path should be also same as is[mysqld]
  • 重启 mysql
1
sudo service mysql restart
  • 最简单的方法是建立软连接 /tmp/mysql/mysql.sock => /var/run/mysqld/mysqld.sock
1
sudo ln -s /tmp/mysql/mysql.sock /var/run/mysqld/mysqld.sock
  • 据说以下也可以解决此问题的一个途径,记录一下
1
/usr/bin/mysql -u root -p -S /home/mysql/mysql.sock

参考列表

  • 使用 phpMyAdmin 登陆 Mysql,用户名密码都没错,但是一直提示如下错误 error: ‘Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’(2)’

error: ‘Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)’
Cannot connect to mysql server ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
Can’t connect to local MySQL server through socket ‘/var/mysql/mysql.sock’ (38)

  • 最根本的原因是 /etc/php5/fpm/php.ini 中的三个配置段 {[Pdo_mysql]pdo_mysql.default_socket = |[MySQL]mysql.default_socket = |[MySQLi]mysqli.default_socket = |} 默认留空,也就是为默认的 /var/run/mysqld/mysqld.sock

  • 使用 vi 搜索 .default_socket 将其改为 {[Pdo_mysql]pdo_mysql.default_socket = /tmp/mysql/mysql.sock|[MySQL]mysql.default_socket = /tmp/mysql/mysql.sock|[MySQLi]mysqli.default_socket = /tmp/mysql/mysql.sock|}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vi /etc/php5/fpm/php.ini

[Pdo_mysql]
...
pdo_mysql.default_socket = /tmp/mysql/mysql.sock
...

[MySQL]
...
mysql.default_socket = /tmp/mysql/mysql.sock
...

[MySQLi]
...
mysqli.default_socket = /tmp/mysql/mysql.sock
...
  • 重启 php5-fpm 生效

注 没有修改 /etc/php5/cli/php.ini


MysqlSql

数据库操作相关

  • 创建数据库
1
mysql> CREATE DATABASE CoamDatabase DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  • 删除数据库
1
mysql> DROP DATABASE CoamDatabase;

11.1.6 Configuring the Character Set and Collation for Applications


mysqldump

  • 导出数据库:

mysqldump -u 用户名 -p 数据库名 > 导出的文件名

1
mysqldump -u root -p CoamDatabase > CoamDatabase.sql   (输入后会让你输入进入MySQL的密码)

(如果导出单张表的话在数据库名后面输入表名即可)

  • 同时备份多个数据库
1
mysqldump -h hostname -u username -p password --databases db_name1 db_name2 db_namen >backup.sql
  • 只备份数据库的结构,不备份数据
1
mysqldump -h hostname -u username -p password --no-data --databases db_name1 db_name2 db_namen >backup.sql
  • 备份所有的数据库
1
mysqldump -h hostname -u username -p password --all-databases >backup.sql

// 其它

1
mysqldump —opt —skip-comments —extended-insert=false -uroot -p1234 inotseeyou_com > inotseeyou_com.sql
  • 导入数据库

首先创建相应的 Database

1
2
3
CREATE DATABASE CoamDatabase DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
use CoamDatabase;
source CoamDatabase.sql;

mysqldump.html


用户相关

  • 查看所有用户
1
mysql> SELECT User, Host, Password FROM mysql.user;
  • 添加新用户 - 以下方式适用于 5.7 以前的版本
1
mysql> INSERT INTO mysql.user (User,Host,Password) VALUES('demouser','localhost',PASSWORD('demopassword'));
  • 添加新用户 - 以下方式适用于 5.7 以后的版本
1
2
3
mysql> GRANT USAGE ON *.* TO 'zhangyanxi'@'localhost' IDENTIFIED BY 'yanxi312' WITH GRANT OPTION;
mysql> GRANT ALL ON *.* TO 'zhangyanxi'@'localhost'; ======> 给用户授权
mysql> flush privileges;
  • 给用户授权相关
1
2
3
mysql> GRANT ALL PRIVILEGES ON demodb.* to demouser@localhost;
GRANT SELECT, INSERT ON *.* TO 'zhangyanxi'@'localhost';
GRANT ALL ON *.* TO 'zhangyanxi'@'%';
  • 检查用户授权
1
mysql> SHOW GRANTS FOR 'demouser'@'localhost';