Ubuntu安装MySQL主从
一、安装mysql
#1.升级apt并下载相关依赖
sudo apt update
sudo apt upgrade
sudo apt install libaio1 libtinfo5 libmecab2 libjson-perl python2 python2.7
#2.进入网站 https://downloads.mysql.com/archives/community/ 选择要下载的mysql版本
#3.复制download下载地址,在服务器中wget进行下载
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.33-1ubuntu18.04_amd64.deb-bundle.tar
#4.将下载的tar包移动至要安装的目录
#5.解压tar包
tar -vxf mysql-server_5.7.33-1ubuntu18.04_amd64.deb-bundle.tar
#6.删除2个测试相关的包
rm -rf mysql-community-test_5.7.33-1ubuntu18.04_amd64.deb
rm -rf mysql-testsuite_5.7.33-1ubuntu18.04_amd64.deb
#7.用dpkg进行安装
sudo dpkg -i mysql-common_5.7.33-1ubuntu18.04_amd64.deb
sudo dpkg -i lib*.deb
sudo dpkg -i mysql-*.deb
#8. 锁定mysql版本,防止apt自动升级
sudo apt-mark hold libmysqlclient-dev
sudo apt-mark hold mysql-client
sudo apt-mark hold mysql-common
sudo apt-mark hold mysql-server
二、配置mysql主从
2.1 Master
2.1.1 修改mysql配置文件
cd /etc/mysql
sudo vim my.cnf
# 写入文件
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 指定需要同步的数据库
binlog-do-dB=xxxx
## 开启二进制日志功能
log-bin=mysql-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
2.2.2 创建授权用户
#重启mysql
sudo service mysql restart
#进入mysql
mysql -uroot -p
#创建用户
create user 'slave'@'%' identified by 'numbfish';
#设置slave权限
grant replication slave,replication client on *.* to 'slave'@'%';
#查看日志和宿主机master的状态
show variables like 'log_bin';
show master status;
2.2 Slave
2.2.1 修改mysql配置文件
cd /etc/mysql
sudo vim my.cnf
# 写入文件
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1
2.2.2 数据库中配置主从
# 修改主从配置
change master to master_host='10.1.21.172', master_user='slave', master_password='numbfish', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos=154, master_connect_retry=30;
# 查看同步状态
show slave status \G;
# 启动同步
start slave;
# 查看同步状态
show slave status \G;
三、彻底删除mysql
#1.卸载mysql
sudo apt-get autoremove --purge mysql-server
sudo apt-get remove mysql-common
sudo rm -rf /etc/mysql/ /var/lib/mysql
#2.清理残留数据
dpkg -l | grep ^rc| awk '{print $2}' | sudo xargs dpkg -P
sudo apt autoremove
sudo apt autoclean