记得:用快乐去奔跑,用心去倾听,用思维去发展,用努力去奋斗,用目标去衡量,用爱去生活。

部署数据库

apt-get update

问题 可能报错

rm /var/lib/apt/lists/lock 

dpkg --configure -a

apt-get install mysql-server

弹框----输入密码 确认密码   /// 也可以mysql_secure_installation配置

mysql  -uroot -p'12345'

主从配置

1、修改主配置文件

vim /etc/mysql/mysql.cnf

[mysqld]
log-bin=master-bin  //启动MySQL二进制日志
server-id=100      
log_bin_index = master-bin.index    //指定记录二进制日志的数据库
binlog_do_db = my_data    //指定记录二进制日志的数据库
binlog_ignore_db = mysql   //指定不记录二进制日志的数据库
...
#bind 127.0.0.1 注释掉

2、登录主服务器创建从服务器用到的账户和权限:

mysql>grant replication slave on *.* to [email protected] identified by '12345';
mysql> flush privileges;

问题 授权这块[email protected]两者 加单引号 会出错  未证实

授权给想要登录的主机

bind   0.0.0.0

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.8' IDENTIFIED BY 'www.linuxidc.com' WITH GRANT OPTION;

3、重启mysql

service mysql restart

4、查看状态

MySQL技术综合_第1张图片      


1、编辑配置文件

[mysqld]
log_bin=slave-bin
server-id = 2
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index
...
#bind 127.0.0.1 注释掉

2、重启服务

service mysql restart

3、登录Slave从服务器,连接Master主服务器

mysql> change master to master_host='39.96.73.99',master_user='slave',master_password='12345',master_log_file='master-bin.000001',master_log_pos=154;

4、启动Slave数据同步。

mysql>start slave;

5、查看Slave信息:

mysql>show slave status\G;

#同步成功

FDkujcL2hCcH1NfB.png!thumbnail      


问题 如果不成功 主从上均执行一下命令

MySQL技术综合_第2张图片      

从库中断问题

报错显示:ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

大多是权限  和 log pos不一致

slave:      stop slave 
            reset slave
做以下的前提要保证:此刻从库和主库数据相同 要不然成功之后还会因缺少某条数据报错        
master:     flush logs;         
            show master status;       记下File, Position。
slave:      CHANGE MASTER TO             
                      MASTER_LOG_FILE='file',MASTER_LOG_POS=pos;
            slave start;
            show slave status\G;

报错        MySQL技术综合_第3张图片      

解决:stop slave ;

     set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;  #跳过slave上的1个错误

    start slave ;

线上MYSQL同步报错故障处理总结 http://blog.itpub.net/15498/viewspace-2134013/

针对第三种 我试了直接三步https://blog.csdn.net/heng_ji/article/details/51013710

 


卸载mysql

sudo apt-get remove mysql-* 
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P    //清理残留的数据

跳出一个对话框,选择yes 


数据库备份

注意是否需要my.cnf 里边 解除注释
备份:
    mysqldump -uroot -p12345 --all-databases --single-transaction  --
master-data=2  --flush-logs  >  /alidata/`date +%F-%H%M`-mysql-all.sql

数据恢复

    还原库 mysql -uroot -p12345 < /alidata/backup/mysql-all.sql
    导表: mysql -uroot -p12345 进去数据库
          use cw100;  
          source /root/crm.sql  在相应表里将外表倒进去

一个完整的备份脚本例子

#!/bin/bash
# Program
# use mysqldump to Fully backup mysql data per week!
# 2017-8-28 huangwei
# History
# Path
BakDir=/var/lib/mysql/backup
LogFile=/var/lib/mysql/backup/fullBakLog.log
Date=`date +%Y%m%d`
Begin=`date +"%Y年%m月%d日 %H:%M:%S"`
cd $BakDir
DumpFile=$Date.sql
GZDumpFile=$Date.sql.tgz
mysqldump -uroot -pcw100SQ18 --all-databases > $DumpFile
/bin/tar -zvcf $GZDumpFile $DumpFile
/bin/rm $DumpFile


#只保留过去四周的数据库内容
count=$(ls -l *.tgz |wc -l)
if [ $count -ge 5 ]
then
file=$(ls -l *.tgz |awk '{print $9}'|awk 'NR==1')
rm -f $file
fi


Last=`date +"%Y年%m月%d日 %H:%M:%S"`
echo 开始:$Begin 结束:$Last $GZDumpFile succ >> $LogFile
#cd $BakDir/daily
#/bin/rm -f



查看binlog日志

eg:
/usr/bin/mysqlbinlog  --no-defaults  --base64-output=decode-rows   -v  --database=cw100   --start-datetime="2019-04-17 08:00:00"   --stop-datetime="2018-07-18 11:00:00"   /usr/lib/mysql/mysql-bin.000154 > /root/binlog.txt