La base de données MySQL ne dispose pas de mécanisme de sauvegarde incrémentielle. Lorsque la quantité de données est trop importante, la sauvegarde est un gros problème. Heureusement, la base de données MySQL fournit un mécanisme de sauvegarde maître-esclave, qui écrit simultanément toutes les données de la base de données maître dans la base de données de sauvegarde.
1. La base de données MySQL ne dispose pas de mécanisme de sauvegarde incrémentielle Lorsque la quantité de données est trop importante, la sauvegarde est un gros problème. Heureusement, la base de données MySQL fournit un mécanisme de sauvegarde maître-esclave, qui écrit simultanément toutes les données de la base de données maître dans la base de données de sauvegarde. Implémentez une sauvegarde à chaud de la base de données MySQL.
2. Afin de mettre en œuvre une sauvegarde à chaud sur deux machines, vous devez d'abord comprendre les exigences de version du serveur de base de données maître-esclave. Pour obtenir une veille chaude, la version de MySQL doit être supérieure à 3.2. Un autre principe de base est que la version de la base de données esclave peut être supérieure à la version de la base de données du serveur maître, mais elle ne peut pas être inférieure à la version de la base de données du serveur maître.
Vérifiez d'abord si la version de le serveur principal prend en charge la version de veille chaude. Vérifiez ensuite si la configuration du bloc de configuration mysqld dans my.cnf (de type Unix) ou my.ini (windows) a un log-bin (enregistrement du journal des modifications de la base de données). Parce que le mécanisme de réplication de mysql est un mécanisme de réplication basé sur les journaux). , le serveur principal doit prendre en charge les journaux de modifications. Définissez ensuite la base de données dans laquelle le journal doit être écrit ou la base de données dans laquelle le journal ne doit pas être écrit. De cette façon, seules les modifications apportées à la base de données qui vous intéressent sont écrites dans le journal de la base de données.
server-id=1 //数据库的id这个应该默认是1就不用改动 log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称 binlog-do-db=db_name //记录日志的数据库 binlog-ignore-db=db_name //不记录日志的数据库
S'il existe plusieurs bases de données, utilisez "," pour séparer
puis définissez le compte utilisateur pour synchroniser la base de données
mysql> GRANT REPLICATION SLAVE ON *.* -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
Versions antérieures à 4.0. 2, car REPLICATION n'est pas pris en charge, utilisez l'instruction suivante pour implémenter cette fonction
mysql> GRANT FILE ON *.* -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
Après avoir défini le fichier de configuration du serveur principal, redémarrez la base de données
Verrouiller la base de données
mysql> FLUSH TABLES WITH READ LOCK;
Il existe deux façons de sauvegarder la base de données. La première consiste à entrer directement. le répertoire de données de mysql et le packager. Vous devez sauvegarder le dossier de base de données. La deuxième méthode consiste à utiliser mysqldump pour sauvegarder la base de données mais en ajoutant le paramètre "--master-data". méthode pour sauvegarder la base de données
c. Vérifiez l'état du serveur maître
mysql> show master status\G; +---------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +---------------+----------+--------------+------------------+ | mysql-bin.003 | 73 | test | manual,mysql | +---------------+----------+--------------+------------------+
Enregistrez les valeurs des éléments Fichier et Position pour une utilisation ultérieure.
d. Activez ensuite le verrouillage de la base de données
mysql> UNLOCK TABLES;
server-id=n //设置数据库id默认主服务器是1可以随便设置但是如果有多台从服务器则不能重复。 master-host=db-master.mycompany.com //主服务器的IP地址或者域名 master-port=3306 //主数据库的端口号 master-user=pertinax //同步数据库的用户 master-password=freitag //同步数据库的密码 master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差 report-host=db-slave.mycompany.com //报告错误的服务器
puis démarrez le serveur de base de données esclave. Si le paramètre "--skip-slave-start" n'est pas ajouté au démarrage, il entrera dans mysql
mysql> slave stop; //停止slave的服务
mysql> CHANGE MASTER TO -> MASTER_HOST='master_host_name', //主服务器的IP地址 -> MASTER_PORT=3306, //主服务器端口 -> MASTER_USER='replication_user_name', //同步数据库的用户 -> MASTER_PASSWORD='replication_password', //同步数据库的密码 -> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记住的参数) -> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)
mysql> slave start;
Vérifiez la synchronisation de la base de données. Si la synchronisation réussit, félicitations !
Vérifiez l'état des serveurs maître et esclave
mysql> SHOW PROCESSLIST\G //可以查看mysql的进程看看是否有监听的进程
Si le journal est trop volumineux, les étapes pour effacer le journal sont les suivantes :
mysql> FLUSH TABLES WITH READ LOCK;
mysql> slave stop;
show master status; +---------------+----------+--------------+------------------+ | File | Position | Binlog_do_db | Binlog_ignore_db | +---------------+----------+--------------+------------------+ | louis-bin.001 | 79 | | mysql | +---------------+----------+--------------+------------------+
mysql> unlock tables;
mysql> CHANGE MASTER TO -> MASTER_HOST='master_host_name', //主服务器的IP地址 -> MASTER_PORT=3306, //主服务器端口 -> MASTER_USER='replication_user_name', //同步数据库的用户 -> MASTER_PASSWORD='replication_password', //同步数据库的密码 -> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记住的参数) -> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)
mysql> slave start;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!