mysql 小记
2023年5月22日...大约 2 分钟
主从同步配置
1、修改主配置文件,在 my.cnf中添加
server-id=1
2、修改从配置文件,在 my.cnf 中添加
server-id=2
#不能和主相同,多台可以此类推,方便区分。
3、在主数据库授权
GRANT REPLICATION SLAVE *.* TO 'tongbu'@'%' IDENTIFIED BY '123456';
4、查看master 的状态信息
MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 954625 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
5、登录从数据库,配置 master 信息
MariaDB [(none)]> change master to
-> master_host='192.168.254.5',
-> master_user='tongbu',
-> master_password='zabbix',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=846858;
Query OK, 0 rows affected (0.01 sec)
6、手动同步不存在的数据库
[root@test02 ~]# mysqldump -uroot -p zabbix > zabbix.sql
#拷贝zabbix.sql 到从数据库。然后创建数据库并导入
MariaDB [(none)]> create database zabbix character set utf8;
MariaDB [(none)]> use mysql;
MariaDB [(none)]> source /root/zabbix.sql
7、启动 slave 服务并查看状态
MariaDB [(none)]> slave start
8、查看从数据库状态
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.254.5
Master_User: tongbu
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 2731280
Relay_Log_File: mariadb-relay-bin.000002
Relay_Log_Pos: 147958
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…………
…………
Master_Server_Id: 1
1 row in set (0.00 sec)
故障处理:
主备不同步问题:
1、清空主配置
- FLUSH TABLES WITH READ LOCK;
- mysqldump 备份数据库
- UNLOCK TABLES;
- reset master ##会造成两步错误,已经错误的情况下,可以正常操作此命令。
- systemctl restart mysql
2、清空从配置
stop slave;
reset slave all ;
systemctl restart mysql
3、重新配置
二、slave 端停止 slave I/O 及 SQL 线程,同时将同步错误的SQL 跳过 1 次。跳过错误会导致数据不一致,启动start slave ,同步状态恢复。命令如下 :
slave stop;
set global slq_slave_skip_counter=1;
slave start;
三、字符编问题
1、修改 my.cnf 指定编码为utf8
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
2、备份数据库,并删除数据库。
3、查看导出的sql 文件,并修改其中指定的编码为 utf8
贡献者
change