mysql数据库主从备份搭建 169次阅读 乱记 2020-03-11 16:02:15 操作系统 :CentOS 7.0 数据库版本:MySQL 5.6.27 主机A:192.168.1.1 (Master) 主机B:192.168.1.2 (Slave) 配置步骤: 在主服务器上,您必须启用二进制日志记录并配置唯一的服务器ID。需要重启服务器。 编辑主服务器的配置文件 my.cnf,添加如下内容 ```sql [mysqld] log-bin=/var/log/mysql/mysql-bin server-id=1 ``` 如果省略server-id(或将其显式设置为默认值0),则主服务器拒绝来自从服务器的任何连接。 主从复制的格式(mixed,statement,row,默认格式是statement) ``` binlog_format=mixed ``` 指定复制的数据库 未设置默认同步所有数据库 ``` binlog-do-db = xwzn_sso ``` 指定不复制的数据库(从库不同步mysql库,以确保各自权限) ``` binlog-ignore-db = mysql binlog-ignore-db = information_schema binlog-ignore-db = performance_schema ``` 创建日志目录并赋予权限 ``` shell> mkdir /var/log/mysql shell> chown mysql.mysql /var/log/mysql ``` 重启服务 ``` shell> systemctl restart mysqld ``` 为了在使用带事务的InnoDB进行复制设置时尽可能提高持久性和一致性, 您应该在master my.cnf文件中使用以下配置项: ``` innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 ``` 确保在主服务器上 skip_networking 选项处于 OFF 关闭状态, 这是默认值。 如果是启用的,则从站无法与主站通信,并且复制失败。 ``` mysql> show variables like '%skip_networking%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | skip_networking | OFF | +-----------------+-------+ 1 row in set (0.00 sec) ``` 应该创建一个专门用于复制数据的用户 每个从服务器需要使用MySQL 主服务器上的用户名和密码连接到主站。 例如,计划使用用户 repl 可以从任何主机上连接到 master 上进行复制操作, 并且用户 repl 仅可以使用复制的权限。 在 主服务器 上执行如下操作 ``` mysql> CREATE USER 'repl'@'%' mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' identified by 'password'; ``` 在从服务器上使用刚才的用户进行测试连接 ``` shell> mysql -urepl -p'password' -h192.168.1.2 ``` 配置从服务器,并重启 在从服务器 上编辑其配置文件 my.cnf 并添加如下内容: // my.cnf 文件 ``` [mysqld] server-id=2 ``` 导入数据到从服务器,并配置连接到主服务器的相关信息 登录到从服务器上,执行如下操作 在从服务器配置连接到主服务器的相关信息 ``` mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.1', -- 主服务器的主机名(也可以是 IP) MASTER_USER='repl', -- 连接到主服务器的用户 MASTER_PASSWORD='password'; ``` 启动从服务器的复制线程 ``` mysql> start slave; Query OK, 0 rows affected (0.09 sec) ``` 检查是否成功 在从服务上执行如下操作,加长从服务器端 IO线程和 SQL 线程是否是 OK ``` mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.223 Master_User: bakuser Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000008 Read_Master_Log_Pos: 120 Relay_Log_File: localhost224-localdomain-relay-bin.000010 Relay_Log_Pos: 283 Relay_Master_Log_File: mysql-bin.000008 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: bom,mx_wms Replicate_Ignore_DB: mysql Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 120 Relay_Log_Space: 638 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_UUID: 2a61b289-3806-11ea-9583-000c296757f3 Master_Info_File: /www/server/data/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 1 row in set (0.00 sec) ``` 输出结果中应该看到 Slave_IO_Running: Yes Slave_SQL_Running: Yes, 就表示成功。 执行此过程后,在主服务上操作的修改数据的操作都会在从服务器中执行一遍,这样就保证了数据的一致性。 AlipayWechat手机上阅读 最后一次更新于2020-03-11 16:02:15 mysql sql 数据备份 主从复制
0 条评论