跳至主要內容

mysql 小记

Change Lee...大约 2 分钟大杂烩mysql

主从同步配置

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、清空主配置

  1. FLUSH TABLES WITH READ LOCK;
  2. mysqldump 备份数据库
  3. UNLOCK TABLES;
  4. reset master ##会造成两步错误,已经错误的情况下,可以正常操作此命令。
  5. 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
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3