Битва синхронизации master-slave в Mysql (1) [Знай это]

MySQL
Битва синхронизации master-slave в Mysql (1) [Знай это]

предисловие

Синхронизация master-slave в Mysql на самом деле очень важна. Также очень важно знать почему, иначе вы никогда не сможете продвинуться вперед. Однако, как говорится, вы должны научиться лазить, прежде чем научиться ходить. В большинстве малых и средних компании среднего размера, которые бизнес должен использовать Для технологии у вас не так много времени, чтобы медленно изучать ее принципы, большинство из них должны смотреть на них всем сердцем, находить какие-то стратегии, быстро их строить и работать в первую очередь. более позднее расширение и оптимизация, не торопитесь. Нам нужно приспособиться к среде, в которой мы находимся, чтобы постоянно двигаться вперед, поэтому сегодня мы будем сканировать

реальный бой

Подготовить

программное обеспечение

mysql5.7.2 CDN.MySQL.com//загрузки/…

аппаратное обеспечение
конфигурация хоста айпи адрес Операционная система использовать путь развертывания
2,6 ГГц (1 ядро) память 2G 10.211.55.7 Centos7.0 mysql-masterr /usr/local/mysql
2,6 ГГц (1 ядро) память 2G 10.211.55.13 Centos7.0 mysql-slave /usr/local/mysql

развертывать

установка mysql

# 上传mysql的tar包
re -be 
# 解压上传的命令
tar -xvf  https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar
cd  https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64
# 创建mysql安装以及数据保存的目录
mkdir /usr/local/mysql
mkdir /usr/local/mysql/data  
mv * /usr/local/mysql
# 删除可能存在的mysql rpm包
rpm -qa|grep -i mysql
rpm -qa | grep maridb
yum remove  mysql mysql-server mysql-libs mysql-server
rpm -e --nodeps `rpm -qa | grep mysql`
rpm -e --nodeps `rpm -qa | grep maridb`
# 知道可能遗留的mysql相关文件,rm掉
find / -name mysql 
rpm -qa|grep mysql
# 因为我们是使用源码的方式安装,所有需要创建mysql用户组
userdel mysql 
groupdel mysql
groupadd mysql    
mkdir /usr/local/mysql
useradd -g mysql -d /usr/local/mysql mysql 
# 编译源码
sh /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
# 编译成功后会在控制台看到打印的mysql的临时密码,记住,后面需要用到
# 启动mysql
sh /usr/local/mysql/support-files/mysql.server start
# 控制台打印success成功启动
# 创建mysql客户端软链接
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
# 修改密码,输入上面步骤控制台打印的临时密码
mysql -u root -p
set password = password("mysql");
# 刷新缓存
flush privileges;
# 授权远程访问
grant all privileges on *.* to 'root'@'%' identified by 'mysql';
# 查看防火墙状态
firewall-cmd --state
# 停止防火请
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service 
# 配置mysql服务开机自动启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld 
# 增加执行权限,检查开机启动列表,没有则加入
chmod 755 /etc/init.d/mysqld
chkconfig --list mysqld 
chkconfig --add mysqld
chkconfig mysqld on
# 以后mysql的启动就可以使用下面命令启动停止了
service mysqld start/stop/restart

конфигурация один

конфигурация mysql-мастер

Возникшие проблемы:
1: Многие статьи расскажут вам, что файл конфигурации my.cnf находится в каталоге /etc/ или в файле поддержки каталога установки, но мы не смогли найти его, когда версия установки была 5.7.Позже, ознакомившись с информацией , мы обнаружили, что версия mysql 5.7 Этот файл конфигурации больше не включен, поэтому вам нужно вручную настроить его самостоятельно

touch /etc/my.cnf
chmod 644 /etc/my.cnf
# 如果遇到权限问题请使用root账户
vim /etc/my.cnf
# 写入内容
# mysql主节点编号
[mysqld] 
server-id = 1 #Mysql服务的唯一编号 每个mysql服务Id需唯一
log-bin=mysql-bin # logbin的名字
binlog-do-db=test03 #需要同步的数据库的名字
binlog-do-db=test05 #需要同步的数据库的名字
binlog-ignore-db=test01 #不需要同步的数据库的名字
log-slave-updates=1 # log更新间隔
slave-skip-errors=1 # 是跳过错误,继续执行复制操作(可选)

конфигурация mysql-ведомого

[mysqld] 
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id = 2
# read_only=1只读模式,可以限定普通用户进行数据修改的操作,但不会限定具有super权限的用户(如超级管理员root用户)的数据修改操作。如果想保证super用户也不能写操作,就可以就需要执行给所有的表加读锁的命令 “flush tables with read lock;”
read_only = 1

перезапустить службу mysqld перезапустить

Конфигурация вторая

конфигурация mysql-мастер

[mysqld] 
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id = 1
log-bin=mysql-bin # logbin的名字

конфигурация mysql-ведомого

[mysqld] 
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id = 2
# read_only=1只读模式,可以限定普通用户进行数据修改的操作,但不会限定具有super权限的用户(如超级管理员root用户)的数据修改操作。如果想保证super用户也不能写操作,就可以就需要执行给所有的表加读锁的命令 “flush tables with read lock;”
read_only = 1
replicate-do-db=test02 #需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可
replicate-ignore-db=test05 #需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可

перезапустить службу mysqld перезапустить

Настройте синхронизацию master-slave

Работа с основной базой данных

1: Используйте пользователя root для входа в mysql, чтобы создать синхронизированную учетную запись и авторизовать ее.

CREATE USER 'slave'@'%' IDENTIFIED BY 'mysql';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
FLUSH PRIVILEGES;
# 查看赋权状态
use mysql;
select  User,authentication_string,Host from user;

# 查看 日志开启状态
show variables like 'log_bin';

успешно открыт

# 查看主节点状态
show master status;

Запомните имя файла и значение позиции, поскольку синхронизация master-slave, подчиненная база данных синхронизируется путем чтения файла журнала главной базы данных, поэтому требуется имя файла и текущая позиция журнала.

работа с базой данных

# 停止正在进行的slave(如果有,此方法也用于修改slave的值(如果参数不对))
stop slave;
# 需要主机名,上面步骤的账户密码以及日志文件名字和位置(请根据实际情况自行修改)
change master to master_host='10.211.55.7', master_user='slave', master_password='mysql', master_log_file='mysql-bin.000003', master_log_pos=1639;
# 启动
start slave;
# 查看状态
show slave status\G;

Если все настроено правильно, то вы увидите:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Если вы не столкнулись с какой-либо ситуацией, общие причины таковы:
1: сеть машины заблокирована
2: Неправильные элементы конфигурации, такие как ip, пароль и т. д.
3: проблема с брандмауэром

Сравнение преимуществ и недостатков

Недостатки установки binlog_do_ на master:
1. Вся нагрузка, вызванная операцией фильтрации, ложится на ведущее устройство.
2. Не удается выполнить репликацию на определенный момент времени (используя binlog)
Рекомендуется использовать конфигурацию два, но я использую конфигурацию один

контрольная работа

Запрашивайте основную и подчиненную базы данных отдельно

use test03;
select * from test01;

Вставить часть данных в основную базу данных

запрос из базы данных

Синхронизация ведущий-ведомый прошла успешно

Суммировать

Это конец сегодняшней реальной битвы. Какие могут быть какие-то успехи? Теперь мы научились лазить. В следующем документе мы научимся ходить и бегать. Следующая часть предсказывает MySQL master-slave синхронизацию. Вот почему.

Справочный блог:
установка mysqlblog.CSDN.net/WeChat_3828…