参考:
https://www.pingcap.com/docs-cn/v3.0/how-to/deploy/orchestrated/ansible/
前提:
yum -y install epel-release git curl sshpass python-pip
硬盘要求使用SSD ##==============文件系统调整 vi /etc/fstab ##官方 UUID=c51eb23b-195c-4061-92a9-3fad812cc12f /data1 ext4 defaults,nodelalloc,noatime 0 2 ##实际 UUID=27f9be47-838b-4155-b20b-e4c5e013cdf3 / ext4 defaults 1 1 ## UUID=2b2000b1-f926-4b6b-ade8-695ee244a901 /boot ext4 defaults 1 2
##重新挂载文件系统、不需要重启就可以应用新设置 mount -o remount / mount ##================查询是否固态硬盘 cat /sys/block/*/queue/rotational ##返回1则表示磁盘可旋转,那么就是HDD了;如果返回0,则表示磁盘不可以旋转有可能是SSD |
#下载安装环境
useradd -m -d /home/tidb tidb
passwd tidb
visudo $添加
tidb ALL=(ALL) NOPASSWD: ALL
su - tidb
ssh-keygen -t rsa
git clone -b v2.1.8 https://github.com/pingcap/tidb-ansible.git
cd /home/tidb/tidb-ansible
sudo pip install -r ./requirements.txt
ansible --version
ansible 2.5.0
cd /home/tidb/tidb-ansible
vi hosts.ini
#server中添加所有集群ip,用途:校准时区
ansible-playbook -i hosts.ini create_users.yml -u root -k
ansible-playbook -i hosts.ini deploy_ntp.yml -u tidb -b
##修改配置
vim inventory.ini
#注意修改deploy_dir 目录,存放目录,开启慢日志/开启generallog
#为tidb pd tikv grafna promethus分配ip
#添加主机 [monitored_servers]
vim conf/tidb.yml
#stmt-count-limit: 5000
#事务太小,程序创建表海量临时数据会出错
stmt-count-limit: 20000
#测试环境注释,不检查硬盘
vim bootstrap.yml
# - { role: check_system_optional, when: not dev_mode|default(false) }
# - { role: machine_benchmark, when: not dev_mode|default(false) }
ansible -i inventory.ini all -m shell -a 'whoami'
ansible -i inventory.ini all -m shell -a 'whoami' -b
#联网下载 TiDB binary 到中控机
ansible-playbook local_prepare.yml
##初始化系统环境,修改内核参数
ansible-playbook bootstrap.yml
##磁盘处理
ansible -i inventory.ini all -m shell -a "sudo cp /etc/fstab /etc/fstab_bak"
ansible -i inventory.ini all -m shell -a "sed -r 's/data ext4 defaults/data ext4 defaults,nodelalloc,noatime/g' /etc/fstab"
#实施替换.注意
ansible -i inventory.ini all -m shell -a "sudo sed -ir 's/data ext4 defaults/data ext4 defaults,nodelalloc,noatime/g' /etc/fstab"
ansible -i inventory.ini all -m shell -a "sudo cat /etc/fstab"
ansible -i inventory.ini all -m shell -a "sudo umount /data"
ansible -i inventory.ini all -m shell -a "sudo mount -a"
ansible -i inventory.ini all -m shell -a "sudo mount -t ext4"
## 磁盘处理结束
#部署 TiDB 集群软件
ansible-playbook deploy.yml -f 30 -vv
#启动服务
ansible-playbook start.yml
#默认无mysql客户端,安装客户端连接工具
rpm -ivh MySQL-client-5.6.21-1.rhel5.x86_64.rpm
##默认无密码,修改密码
mysql -uroot -h 192.168.0.177 -P 4000 -p
use mysql;
SET PASSWORD FOR 'root'@'%' = '******@@';
备份相关:
#建备份专用用户
#1授予管理员权限(不建议权限太大用户)
GRANT ALL PRIVILEGES ON *.* TO ****user@"10.10.101.%,localhost" IDENTIFIED BY "***passwd";
#2授予备份最小权限
grant select,lock tables,show view,trigger,event on *.* to ****user@"10.10.101.%" identified by "***passwd";
##查看权限
show grants for ***user;
#备份工具下载
# 下载 tool 压缩包
su - tidb
cd ~
wget http://download.pingcap.org/tidb-enterprise-tools-latest-linux-amd64.tar.gz
wget http://download.pingcap.org/tidb-enterprise-tools-latest-linux-amd64.sha256
# 检查文件完整性,返回 ok 则正确
sha256sum -c tidb-enterprise-tools-latest-linux-amd64.sha256
# 解开压缩包
tar -xzf tidb-enterprise-tools-latest-linux-amd64.tar.gz
cd tidb-enterprise-tools-latest-linux-amd64
#TIDB备份:
/root/tidb-enterprise-tools-latest-linux-amd64/bin/mydumper -h 127.0.0.1 -P 4000 -u root -t 16 -F 64 --skip-tz-utc -a -o ./20181122mydumper
#TIDB恢复 (!!!坑爹:密码@@无法在命令行中输入,只能在提示中登陆!!!)
/root/tidb-enterprise-tools-latest-linux-amd64/bin/loader -h 127.0.0.1 -t 32 -u root -P 4000 -t 32 -d ./20181122mydumper
每日备份脚本
mkdir -p /data/backup chown -R tidb:tidb /data/backup/ cd /data/backup/
#添加定时任务执行备份 echo "0 0 * * * tidb sh /data/backup/backup.sh" >> /etc/crontab
tee /data/backup/backup.sh <<-'EOF' host=10.10.108.1 username=*****user password=********passwd port=4000 /home/tidb/tidb-enterprise-tools-latest-linux-amd64/bin/mydumper -h $host -P $port -t 16 --skip-tz-utc all-databases -u $username -p $password -o /data/backup/tidb_backup_$(date +'%Y%m%d%H%M') #删除 find /data/backup/ -mtime +7 -name "tidb_backup_*" -exec rm -rf {} \; EOF |