[root@Maykee ~]# :#号是超级管理员对应的命令行
[egon@Maykee ~]$ :$号是普通用户对应的命令行
@为分隔符
@之前为当前登陆的用户 - (whoami)
@之后为当前的主机名称 - (hostname)
主机名称之后为当前用户所在的路径: ~为家目录,/为根目录
?
通配符:
    * : 任意个数任意字符
    ? : 1个任意字符
    []: 匹配中括号内的任意一个字符
    {}: 括号内用..隔开表示生成序列,用逗号隔开表示多个数据
    ! : 取反
    ‘‘: 使用echo输出时若使用单引号则将引号内原封不动的输出到屏幕
    "": 使用echo输出时会先尝试解析执行引号内的特殊符号,若存有特殊符号         且解析不到时会输出空
    ``: 会将引号内当做命令进行执行
    ; : 命令结束符
    # : 注释内容
    | : 管道
    $ : 在命令中使用代表取值
    \ : 逃脱符,将有特殊含义的字符转译成一个普通的字符
    & : 将指令放入后台运行,不会影响前台继续操作命令
    &&: python中的and
    ||: python中的or
    
特殊符号:
    重定向特殊符号:
        0 表示标准输入(stdin),配合<或<<使用,数据流从右向左
    python test.py 0>>filename(将不报错的输出信息输出到指定文件中)
            1个>表示覆盖, 2个>表示追加
        1 表示标准输出(stdout),配合>或>>使用,数据流从左向右
    python test.py 1>>filename(将不报错的输出信息输出到指定文件中)
            1个>表示覆盖, 2个>表示追加
        2 标准错误(stderr),配合>或>>使用,数据流从左向右
    python test.py 2>>filename(将不报错的输出信息输出到指定文件中)
            1个>表示覆盖, 2个>表示追加
    python test.py 1>>filename1 2>>filename2
    (将正常输出的信息输出到文件1,错误的输出信息输出到文件2)
?
ctrl + c   终止当前正在进行的操作 
ctrl + l   清空当前屏幕 - (clear)
ctrl + d   退出当前用户 
ctrl + r   查看(历史命令) -  (history|grep)
ctrl + a   把光标移动到行首 
ctrl + e   把光标移动到行尾
ctrl + u   把光标到行首的内容删除/剪切 
ctrl + y   粘贴 
delete     光标所在处从前往后删除内容
ctrl + k   把光标到行尾的内容删除/剪切 
ctrl + →  向右移动一个单词 
ctrl + ←  向左移动一个单词
ctrl + s   锁屏 
ctrl + q   解锁  
ctrl + w   删除当前位置至上一个空格的字符
man 命令:获取该命令的所有帮助信息
命令 --help:获取精简版的命令帮助信息
info 命令:获取更为详细的命令帮助信息
?
也可以使用搜索引擎网站来获取命令帮助信息。如:百度,谷歌,搜狐等。
命令详解的网址
http://man.linuxde.net
http://liunx.web3.xin
http://linux.51yip.com
重启:
    shutdown  -r  10    10分钟之后重启
    shutdown  -r  0     立刻重启 
    shutdown  -r  now   立刻重启 
    reboot              立即重启
    init 6              立即重启
关机:
    shutdown -h  10     10分钟之后关机 
    shutdown -h  0      立刻关机
    shutdown -h  now    立刻关机
    poweroff            立即停止系统并关闭电源
    init 0              立即关机
    half                立即停止系统但需要人工关闭电源
注销:
    logout
    exit
取消关机/重启:
    shutdown -c
ifconfig           显示所有网卡的IP地址
ifconfig eth0/1    显示某块网卡的IP地址
ip a               显示所有网卡的IP地址
ip a s eth0/1      显示某块网卡的IP地址
hostname -I        显示所有IP地址(只有IP信息)
hostname -i        显示外网IP地址(只有IP信息)
临时生效:
?
当前登陆用户:
?
永久生效:
cd:
    cd/cd~ : 切换到当前用户的家目录
    cd.    : 保持当前目录不变
    cd..   : 切换到上级目录
    cd -   : 切换到上次所在目录
    cd /   : 切换到根目录
mkdir:
    mkdir test               : 创建一个目录/文件夹
    mkdir -p test1/test2     : 递归创建目录,可以连续创建多个目录
    mkdir -m                 : 设置新目录默认对应的权限
    mkdir -v                 : 创建目录后给出提示
    mkdir {test1,test2,test3}: 一次性创建多个目录
    mkdir test{1..10}        : 一次性创建多个连续的目录
                               括号内可以是连续的数字或字母
touch:
    touch test.txt            : 创建一个文件(相对路径)
    touch test/test1/test2.txt: 创建一个文件(绝对路径)
    touch {1..10}.txt         : 创建多个连续的文件
    touch test{1..10}.txt     : 创建多个连续的文件
                                括号内可以是连续的数字或字母
ls -a /etc: 显示指定目录下所有子目录与文件,包括隐藏文件. 
ll /etc   : 以列表形式显示目录的详细信息,是ls -l的缩写
ll -h /etc: 以人性化方式显示文件大小,以K/M/G为单位
ll -t /etc: 根据最后修改时间排序,默认是以文件名排序
ls -d /etc: 显示目录本身的信息而不是显示目录的内容
ls -r /etc: 倒序排序
ls -lt /etc: 按照时间进行排序
ls -lrt /etc: 找出最新的文件
cp 源文件 目标地址 : 基础复制文件 cp -r 源文件夹 目标地址 : 递归复制目录下的所有层级的子目录与文件 cp -p 源文件 目标地址 : 复制时保持目标文件属性不变 cp -d 源文件 目标地址 : 复制时保持软链接 cp -a 源文件夹 目标地址 : 等同于-r-p-d三种方法 cp -t 源文件 目标地址 : 将所有源参数复制到指定目录
mv 源文件 目标地址 : 基础移动文件 mv 源文件 newname: 为源文件重命名
rm -f 目标文件 : 强制删除,没有提示 rm -r 目标文件夹 : 删除整个目录,删除目录时必须加r,一次性可删除多个目录 rm -i 目标文件 : 在删除前需要确认,不能与-f联合使用
echo hello world : 将echo后的内容输出到屏幕 echo hello>> 文件名: 将echo后的内容追加到文件末尾 echo hello> 文件名 : 将echo后的内容覆盖至文件
cat filename : 查看文件内容 cat -b filename : 查看文件内容时显示行编号(忽略空行) cat -n filename : 查看文件内容时显示行编号(不忽略空行) cat -A filename : 查看文件内容时在每行的最后添加$符号 cat > filename : 清空文件内容 cat > filename <<end hello world : 创建一个文件并写入内容,若文件存在则覆盖文件内容 end cat >> filename <<end hello world : 创建一个文件并写入内容,若文件存在则在末尾追加内容 end
more filename : 分页显示文件内容
                空格 - 下一页
                b - 上一页 
                q - 退出
                到最后一行直接退出
                
less filename : 分页显示文件内容
                空格 - 下一页
                b - 上一页 
                q - 退出
                到最后一行不会直接退出
                filename前加-N为显示行号
head -n5 filename : 显示文件前5行 tail -n5 filename : 显示文件后5行 -f --follow : 显示文件实时更新(eg:操作日志) -f --follow --retry : 如果文件不存在会不断进行重试
file 文件名 : 可查看该文件的类型
which 命令 : 显示输出命令所在的绝对路径
whereis 命令 : 显示命令所在的路径以及与其相关的所有文件路径 包括源码,二进制文件,帮助手册等相关文件路径
find filename : 根据文件名快速查找文件,默认在当前目录下查找 -maxdepth num : 最大查找的层数,一定要放在最前面,1表示该目录下一层 -type f d l: f(文件),d(文件夹),l(链接文件) -name : 文件名 -iname: 文件名(忽略大小写) -size +1M -100K : 根据文件大小查找 -mtime +day -day : 根据最后更新时间查找文件,单位为天 -ctime +day -day : 根据创建时间查找文件,单位为天 示例: find / -type f -size +1M -iname "*.txt" | xargs ls -lh ## 筛选出以.txt结尾且文件大小大于1M的文件,并格式化显示 find /root/ -mtime +3 -name "*" | xargs ls -lh ## 筛选出根目录下3天以前创建的所有文件并格式化显示 find /root/ -type f -name "*.txt" | xargs cp -t /tmp/ ## 筛选出根目录下所有以.txt结尾的文件拷贝到tmp目录下
seq 10 > a.txt : 在a.txt文件中生成10个有序数字,每个数字独占一行
xargs -n2 < a.txt : 将a.txt文件中的内容两个两个分成一组,
                    不带 -n则全部分为一组
tar的四个参数:zcvf
	z:表示通过gzip软件进行压缩
	c:表示创建压缩包
	v:表示显示创建压缩包和解压的过程
	f:表示指定压缩包(f一定要放在这几个参数后)
压缩示例:
	tar -zcvf /tmp/test.tar etc
	## 将根路径下的etc文件压缩,并将压缩包放入tmp下
	tar -zcvf /tmp/test.tar --exclude filename ~/
	## 将家目录下除了filename的其他文件压缩到tmp下的test.tar
解压示例:
	tar -xf /tmp/test.tar -C ~/test
    ## 将tmp下的test压缩包解压到家目录下的test目录下
    ## 不指定解压目录则解压到当前目录
***
在压缩时不建议使用绝对路径,通常cd到要压缩的文件目录再进行压缩
压缩示例: zip -r /tmp/test.zip etc ## 压缩当前目录下的etc并将压缩包放入tmp下 zip -rq /tmp/test.zip etc ## q表示安静模式,即不显示压缩过程 unzip -d /tmp/test_zip /tmp/test.zip ## 将tmp下的test.zip解压到tmp下的test_zip目录下
date : 系统默认时间格式 Mon May 6 11:09:44 CTS 2019 date +%F : 通用时间格式 2019-05-06 date +%T : 当天时间 11:10:04 date -d "1 day/week/month" : 一天/周/月之前的时间,减号代表之前 date -s "20190601 12:12:12" : 设置时间,不设置具体时间可以不加引号
yum install ntpdate -y 执行: ntpdate ntp1.aliyun.com
添加普通用户: useradd username (系统会自动为该用户分配用户id与用户组id) 手动指定用户id或用户组id: useradd -u 501~65535区间 username useradd -g 1001 username 指定用户的shell命令解释器 useradd -s nologin username 创建虚拟用户 useradd -M username (不会创建家目录) 创建用户时为其添加说明信息 useradd -c username 为创建的用户设置登陆密码 echo 密码 | passwd --stdin username 查看用户id与用户组id信息: id username 切换用户: su - username (不加-表示临时切换,由root用户进行切换时输出$PATH 不会改变路径) su - username -c "pwd" (切换用户并执行命令) 删除用户: userdel username (只删除用户信息不删除家目录信息) userdel -r username (删除用户家目录及用户所有信息) 若该用户被某个进程所使用则可执行 (kill -9 进程编号)后再进行删除 修改用户信息: usermod -u 10000 username (修改用户id) usermod -g 10001 username (修改用户组id) 创建用户组: groupadd -g 10002 groupname (创建并指定用户组id) 删除用户组: groupdel groupname (不能删除还有用户归属的用户组)
创建硬链接: ln 源文件 硬链接文件名 创建软连接: ln -s 源文件 软连接文件名
统计文件个数: ls | wc -l 查看节点使用率: df -i(inode) 统计目录下所有1G以上的文件的容量: du /* -sh | grep G 节点容量不足时要将一些无用的小文件进行统一删除: find / -size -1b -name "*.txt" Block容量不足时要将一些无用的大文件进行统一删除
‘‘‘ 详见Linux详细文档第12章节 ‘‘‘
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz tar -xvJf Python-3.6.2.tar.xz cd Python-3.6.2 ./configure prefix=/usr/local/python3 make && make install 执行上面的命令时若报错:zipimport.ZipImportError: can‘t decompress data https://blog.csdn.net/u014749862/article/details/54430022 安装完成后将pip添加至环境变量 https://blog.csdn.net/huangfei711/article/details/53044539/ 建议更换pip源
源码/二进制安装: 解压安装包: tar xf mysql-5.6.40.tar.gz 进入该目录下: cd mysql-5.6.40.tar.gz 生成编译文件: cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.40 -DMYSQL_DATADIR=/usr/local/mysql-5.6.40/data -DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.40/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITH_ZLIB=bundled -DWITH_SSL=bundled -DENABLED_LOCAL_INFILE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLE_DOWNLOADS=1 -DWITH_DEBUG=0 编译安装: make && make install 进入mysql程序目录: cd /usr/local/mysql-5.6.40/ 创建mysql系统用户: useradd mysql -s /sbin/nologin -M 进入配置文件及脚本目录 cd support-files/ 拷贝配置文件到etc,覆盖etc下的my.cnf cp my-default.cnf /etc/my.cnf 拷贝启动脚本 cp mysql.server /etc/init.d/mysqld 进入初始化目录 cd /usr/local/mysql-5.6.40/scripts/ 初始化数据库 ./mysql_install_db --user=mysql --basedir=/usr/local/mysql-5.6.40 --datadir=/usr/local/mysql-5.6.40/data 做软连接 ln -s /usr/local/mysql-5.6.40 /usr/local/mysql 启动mysql: /etc/init.d/mysqld start 启动时若报错(ERROR! The server quit without updating PID file (/usr/local/mysql-5.6.40/data/db01.pid)),原因为找不到该目录 执行:mkdir /usr/local/mysql-5.6.40/tmp 为mysql添加环境变量 vim /etc/profile export PATH="/usr/local/mysql/bin:$PATH" source /etc/profile 为mysql授权 chown -R mysql.mysql /usr/local/mysql* 创建新用户 mysqladmin -uroot -p password 123(默认无密码) 链接mysql mysql -uroot -p123
mysql 常用属性:
    1.   -u:指定用户
    2.	 -p:指定密码
    3.	 -S:指定socket文件
    4.	 -P:指定端口
    5.	 -h:指定主机域
    6.	 -e:指定SQL语句
mysqladmin常用属性:
	1.   -u:指定用户
    2.	 -p:指定密码
    3.	 -S:指定socket文件
    4.	 -P:指定端口
    5.	 -h:指定主机域
    6.   password:指定新密码
    7.   shutdown:停止mysql服务
    8.   create 库名:在库外创建数据库
    9.   drop 库名:在库外删除数据库
方法一:越过授权重新插入root用户
1. 在/etc/my.cnf中配置‘skip-grant-tables‘
2. 重启mysql服务‘/etc/init.d/mysqld restart‘
3. 进入mysql在mysql.user中插入数据
insert into mysql.user(User,authentication_string,ssl_cipher x509_issuer x509_subject) values(‘root‘,‘‘,‘‘,‘‘,‘‘);
4. 为刚才插入的用户更新mysql.user中所有字段
update mysql.user set Host=‘127.0.0.1‘,select_priv=‘y‘, insert_priv=‘y‘,update_priv=‘y‘,Alter_priv=‘y‘,delete_priv=‘y‘,create_priv=‘y‘,drop_priv=‘y‘,reload_priv=‘y‘,shutdown_priv=‘y‘,Process_priv=‘y‘,file_priv=‘y‘,grant_priv=‘y‘,References_priv=‘y‘,index_priv=‘y‘,create_user_priv=‘y‘,show_db_priv=‘y‘,super_priv=‘y‘,create_tmp_table_priv=‘y‘,Lock_tables_priv=‘y‘,execute_priv=‘y‘,repl_slave_priv=‘y‘,repl_client_priv=‘y‘,create_view_priv=‘y‘,show_view_priv=‘y‘,create_routine_priv=‘y‘,alter_routine_priv=‘y‘,create_user_priv=‘y‘ where user=‘root‘;
5. 为root用户设置一个新密码
update mysql.user set authentication_string = password("新密码") where user = "root" and host = "localhost";
6. 退出mysql,更改/etc/my.cnf删除‘skip-grant-tables‘并重启mysql服务
方法二:
越过授权并执行:flush privileges;
然后授权一个新超级用户:
grant all on *.* to root@‘localhost‘ identified by ‘123‘ with grant option;
更改配置文件的越过授权,重启mysql服务即可
提示:由于mysql有预分配内存机制,服务器内存需在2GB以上,否则容易内存崩溃
1.创建多个配置文件目录
	mkdir -p /data/330{7..9}
2.编辑多个配置文件
    vim /data/3307/my.cnf
    [mysqld]
    basedir=/usr/local/mysql
    datadir=/data/3307/data
    port=3307
    socket=/data/3307/mysql.sock
    server-id=7
    log_error=/data/3307/data/mysql.err
    pid=/data/3307/data/mysql.pid
    
    vim /data/3308/my.cnf
    [mysqld]
    basedir=/usr/local/mysql
    datadir=/data/3308/data
    port=3308
    socket=/data/3308/mysql.sock
    server-id=8
    log_error=/data/3308/data/mysql.err
    pid=/data/3308/data/mysql.pid
    
    vim /data/3309/my.cnf
    [mysqld]
    basedir=/usr/local/mysql
    datadir=/data/3309/data
    port=3309
    socket=/data/3309/mysql.sock
    server-id=9
    log_error=/data/3309/data/mysql.err
    pid=/data/3309/data/mysql.pid
    
3.进入mysql初始化目录并初始化多套目录
	cd /usr/local/mysql/scripts/
    ./mysql_install_db --defaults-file=/data/3307/my.cnf --		user=mysql --basedir=/usr/local/mysql --					datadir=/data/3307/data
    
    ./mysql_install_db --defaults-file=/data/3308/my.cnf --		user=mysql --basedir=/usr/local/mysql --					datadir=/data/3308/data
    
    ./mysql_install_db --defaults-file=/data/3309/my.cnf --		user=mysql --basedir=/usr/local/mysql --					datadir=/data/3309/data
    
4.授权
	chown -R mysql.mysql /data/330*
	
5.启动所有mysql
	mysqld_safe --defaults-file=/data/3307/my.cnf &
	mysqld_safe --defaults-file=/data/3308/my.cnf &
	mysqld_safe --defaults-file=/data/3309/my.cnf &
	
6.检查端口和进程是否存活
	netstat -lntup|grep 330*
	ps -ef|grep mysqld
	
7.为所有mysql实例设置密码
mysqladmin -uroot -p -S /data/3307/mysql.sock  password 3307
mysqladmin -uroot -p -S /data/3308/mysql.sock  password 3308
mysqladmin -uroot -p -S /data/3309/mysql.sock  password 3309
8.链接mysql实例
    mysql -uroot -p3307 -S /data/3307/mysql.sock
    mysql -uroot -p3308 -S /data/3308/mysql.sock
    mysql -uroot -p3309 -S /data/3309/mysql.sock
    
9.快捷连接mysql实例方法
    vim /usr/local/mysql/bin/mysql3307
    mysql -uroot -p3307 -S /data/3307/mysql.sock
    vim /usr/local/mysql/bin/mysql3308
    mysql -uroot -p3308 -S /data/3308/mysql.sock
    vim /usr/local/mysql/bin/mysql3309
    mysql -uroot -p3309 -S /data/3309/mysql.sock
    
10.授权快捷链接方式
	chmod +x /usr/local/mysql/bin/mysql330*
	
11.停止mysql多实例
mysqladmin -uroot -p3307 -S /data/3307/mysql.sock shutdown
mysqladmin -uroot -p3308 -S /data/3308/mysql.sock shutdown
mysqladmin -uroot -p3309 -S /data/3309/mysql.sock shutdown
1.修改主库mysql配置文件并重启使其生效
	log_bin=mysql-bin
    binlog_format=row
    server_id=1
2.在主库创建主从复制用户
	grant replication slave on *.* to rep@‘%‘ identified by 
3.在主库执行
	show master status;
	记录File与Position字段的值
4.在从库mysql执行
	change master to
	master_host=‘主库ip‘,
	master_user=‘在主库创建时的用户名‘,
	master_password=‘在主库创建时的密码‘,
	master_log_file=‘主库记录的File字段的值‘,
	master_log_pos=‘主库记录的Position字段的值‘;
5.在从库开启主从复制
	start slave;
6.在从库查看主从复制的状态
	show slave status\G
	看到如下两个参数的值为yes表示主从复制成功
	Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
	若两个参数的值都为NO表示主从复制未开启或命令错误
	若第一个参数的值为NO表示在同步主库的SQL时出错
		解决方案:
			先停止服务:stop slave;
			执行命令:
			set global sql_slave_skip_counter=N;
			该命令表示可忽略N次错误
			开启服务:start slave;
	若第二个参数的值为NO表示出现以下两种错误
		1.网络问题:
			测试ip:可使用ping 主库ip 查看网络是否联通
			测试端口:可使用telnet 主库ip 3306 检查端口是否存活
			用户名密码:检查用户名密码是否正确
		2.反向解析问题:
			报错信息为:Access denied for user ‘root‘@‘db02‘ 							(using password: NO)
			可以看到root用户后是我们的主机名称
			原因就是Mysql的反向解析机制将我们的ip解析为了我们的主机名             可在配置文件中配置skip_name_resolve解决
MySQL中Binlog的工作模式: 语句模式(默认) 行级模式(MySQL5.7默认) 企业中多使用该模式,记录的是数据库中每一行 的变化过程,比语句模式更加严谨 混合模式 恢复数据流程: 1.使用mysqlbinlog关键字查看binlog: mysqlbinlog mysql-bin.000001 2.在行级模式中是查看不到DML(数据操作语言)语言,需加入一些参数进行查看 mysqlbinlog --base64-output=decode-rows -vvv mysql-bin.00003 3.根据上面执行语句找到要恢复数据的起始位置与结束位置后执行: mysqlbinlog --start -position=起始位置 --stop -position结束位置 mysql-bin.000003 > /tmp/binlog.sql 4.然后进入mysql执行: source /tmp/binlog.sql
MHA工作原理:
	当Master(主库)出现故障时,它可以自动将最新数据的Slave(从库)提升为	新的Master,然后将所有其他的Slave重新指向新的Master
	
MHA工作流程:
	1.将宕机的master上的所有binlog事件保存下来
	2.对比从库上的relay-log找到数据最新的slave
	3.通过最新数据的slave上的中继日志将其他从库的数据补全
	4.通过从宕机的master上保存下来的binlog将数据最新的slave补全
功能依赖:
	每个mysql服务器都必须配置:
	yum install perl-DBD-MySQL -y
	rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
	
配置流程:
  #01 从库必须开启binlog(随时可能升级为主库)
  #02 从库开启的server_id不能与主库相同
  #03 所有库中都必须配置relay_log_purge=0(禁用自动删除relay-log)
  #04 从库也必须要创建主从复制用户(开启成功后在主库执行一遍即可)
  #05 在所有从库中执行(创建slave)
        change master to
        master_host=‘主库ip‘,
        master_user=‘在主库创建时的用户名‘,
        master_password=‘在主库创建时的密码‘,
        master_log_file=‘主库记录的File字段的值‘,
        master_log_pos=‘主库记录的Position字段的值‘;
  #06 在所有服务器中创建软连接
        ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin/
        ln -s /usr/local/mysql/bin/mysql /usr/bin/
  #07 创建MHA工作目录
    	mkdir /etc/mha
  #08 自定义生成MHA配置文件
    	vim /etc/mha/app1.cnf
   		[server default]
   		# 设置manager的工作目录
        manager_log=/etc/mha/manager.log
        # 设置manager的日志目录
        manager_workdir=/etc/mha/app1
        # 设置master,保存binlog的位置,以便MHA可以找到master的日             志,我这里的也就是mysql的数据目录
        master_binlog_dir=/usr/local/mysql/data
        # 设置自动failover时候的切换脚本
        master_ip_failover_script=
        /usr/local/bin/master_ip_failover(需下载)
        # 监控用户
        user=mha
        # 监控用户密码
        password=mha
        #设置监控主库,发送ping包的时间间隔,尝试三次没有回应的时候自          动进行failover
        ping_interval=2
        # 复制用户
        repl_user=rep
        # 复制用户的密码
        repl_password=123
		# 设置ssh登陆的用户名
        ssh_user=root
        [server1]
        hostname=10.0.0.51
        port=3306
        [server2]
        hostname=10.0.0.52
        port=3306
        [server3]
        hostname=10.0.0.53
        port=3306
    
  #09 在mysql中创建一个mha管理用户,只需要在主库创建
  		grant all on *.* to mha@‘%‘ identified by ‘mha‘;
  #10 创建密钥对,完成免密登陆,在所有服务器上执行并测试
ssh-keygen -t dsa -P ‘‘ -f ~/.ssh/id_dsa >/dev/null 2>&1
ssh-copy-id -i /root/.ssh/id_dsa.pub root@10.0.0.53
ssh-copy-id -i /root/.ssh/id_dsa.pub root@10.0.0.52
ssh-copy-id -i /root/.ssh/id_dsa.pub root@10.0.0.51
  #11 在主库绑定vip
  		/sbin/ifconfig eth0:0 10.0.0.55/24
  #12 给配置文件中的master_ip_failover_script指定的脚本转换格式
  		dos2unix master_ip_failover
  #13 给配置文件中的master_ip_failover_script指定的脚本执行权限
  		chmod +x master_ip_failover
  #14 使用mha工具检测ssh链接
		masterha_check_ssh --conf=/etc/mha/app1.cnf
  #15 使用mha工具检测主从复制
		masterha_check_repl --conf=/etc/mha/app1.cnf
  #16 启动mha
        nohup masterha_manager --conf=/etc/mha/app1.cnf 
        --remove_dead_master_conf --ignore_last_failover <           /dev/null > /etc/mha/manager.log 2>&1 &
  #17 检查mha启动状态
    	masterha_check_status --conf=/etc/mha/app1.cnf
  #18 停止mha
  		masterha_stop --conf=/etc/mha/app1.cnf
	
MHA工具介绍:
    Manager工具包主要包括以下几个工具:
    cd /root/mha4mysql-manager-0.56/bin
    ll
    masterha_check_ssh              #检查MHA的ssh-key
    masterha_check_repl             #检查主从复制情况
    masterha_manger                 #启动MHA
    masterha_check_status           #检测MHA的运行状态
    masterha_master_monitor         #检测master是否宕机
    masterha_master_switch          #手动故障转移
    masterha_conf_host              #手动添加server信息
    masterha_secondary_check        #建立TCP连接从远程服务器
    masterha_stop                   #停止MHA
Node工具包主要包括以下几个工具:
    cd /root/mha4mysql-node-0.56/bin
    ll
    save_binary_logs                #保存宕机的master的binlog
    apply_diff_relay_logs           #识别relay log的差异
    filter_mysqlbinlog              #防止回滚事件
    purge_relay_logs                #清除中继日志
完全备份/data/ mysqldump -u* -p* -S socket文件 -A > /tmp/full.sql
基础传输项目流程 服务器关闭防火墙 systemctl stop firewalld 上传django文件时要注意在服务器配置数据库环境 在settings配置文件中设置ALLOWED_HOSTS = [‘*‘] 使用scp上传文件时(尽量使用相对路径) scp filename username@hostname path 或使用X shell直接拖拽文件上传,需安装: yum install -y lrzsz 解压文件到服务器指定目录 解压方式详见打包压缩命令 运行django项目需切换到项目根目录下执行: python3 manager.py runserver host:port
systemctl stop firewalld 停止防火墙 systemctl disable firewalld 禁用防火墙(临时有效) getenforce 查看selinux状态 setenforce 0 关闭selinux(临时有效) sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g‘ /etc/sysconfig/selinux (永久有效)
原文:https://www.cnblogs.com/dongzhihaoya/p/10862265.html