Konfigurowanie replikacja typu data-in w Azure Database for MariaDBConfigure Data-in Replication in Azure Database for MariaDB

W tym artykule opisano sposób konfigurowania replikacja typu data-in w Azure Database for MariaDB przez skonfigurowanie serwerów głównych i replik.This article describes how to set up Data-in Replication in Azure Database for MariaDB by configuring the master and replica servers. W tym artykule założono, że masz pewne doświadczenie w korzystaniu z serwerów i baz danych MariaDB.This article assumes that you have some prior experience with MariaDB servers and databases.

Aby utworzyć replikę w usłudze Azure Database for MariaDB, replikacja typu data-in synchronizuje dane z lokalnego serwera MariaDB, w maszynach wirtualnych lub w usługach bazy danych w chmurze.To create a replica in the Azure Database for MariaDB service, Data-in Replication synchronizes data from a master MariaDB server on-premises, in virtual machines (VMs), or in cloud database services.

Uwaga

Jeśli serwer główny jest w wersji 10,2 lub nowszej, zalecamy skonfigurowanie replikacja typu data-in przy użyciu globalnego identyfikatora transakcji.If your master server is version 10.2 or newer, we recommend that you set up Data-in Replication by using Global Transaction ID.

Utwórz serwer MariaDB, który ma być używany jako replikaCreate a MariaDB server to use as a replica

  1. Utwórz nowy serwer Azure Database for MariaDB (na przykład replica.mariadb.database.azure.com).Create a new Azure Database for MariaDB server (for example, replica.mariadb.database.azure.com). Serwer jest serwerem repliki w replikacja typu data-in.The server is the replica server in Data-in Replication.

    Aby dowiedzieć się więcej o tworzeniu serwera, zobacz Tworzenie serwera Azure Database for MariaDB przy użyciu Azure Portal.To learn about server creation, see Create an Azure Database for MariaDB server by using the Azure portal.

    Ważne

    Należy utworzyć serwer Azure Database for MariaDB w warstwach cenowych Ogólnego przeznaczenia lub zoptymalizowanych pod kątem pamięci.You must create the Azure Database for MariaDB server in the General Purpose or Memory Optimized pricing tiers.

  2. Utwórz identyczne konta użytkowników i odpowiednie uprawnienia.Create identical user accounts and corresponding privileges.

    Konta użytkowników nie są replikowane z serwera głównego do serwera repliki.User accounts aren't replicated from the master server to the replica server. Aby zapewnić użytkownikom dostęp do serwera repliki, należy ręcznie utworzyć wszystkie konta i odpowiednie uprawnienia na nowo utworzonym serwerze Azure Database for MariaDB.To provide user access to the replica server, you must manually create all accounts and corresponding privileges on the newly created Azure Database for MariaDB server.

Konfigurowanie serwera głównegoConfigure the master server

Poniższe kroki przygotowują i skonfigurują serwer MariaDB hostowany lokalnie, na maszynie wirtualnej lub w usłudze bazy danych w chmurze dla replikacja typu data-in.The following steps prepare and configure the MariaDB server hosted on-premises, in a VM, or in a cloud database service for Data-in Replication. Serwer MariaDB jest serwerem głównym w replikacja typu data-in.The MariaDB server is the master in Data-in Replication.

  1. Włącz rejestrowanie plików binarnych.Turn on binary logging.

    Aby sprawdzić, czy na wzorcu jest włączone rejestrowanie plików binarnych, wprowadź następujące polecenie:To see if binary logging is enabled on the master, enter the following command:

    SHOW VARIABLES LIKE 'log_bin';
    

    Jeśli zmienna log_bin zwraca wartość ON, rejestrowanie binarne jest włączone na serwerze.If the variable log_bin returns the value ON, binary logging is enabled on your server.

    Jeśli log_bin zwraca wartość OFF, edytuj plik My. cnf tak, aby log_bin=ON włączał rejestrowanie binarne.If log_bin returns the value OFF, edit the my.cnf file so that log_bin=ON turns on binary logging. Aby zmiana zaczęła obowiązywać, należy ponownie uruchomić serwer.Restart the server to make the change take effect.

  2. Skonfiguruj ustawienia serwera głównego.Configure master server settings.

    Replikacja typu data-in wymaga, aby parametr lower_case_table_names był spójny między serwerem głównym a serwerami repliki.Data-in Replication requires the parameter lower_case_table_names to be consistent between the master and replica servers. Parametr lower_case_table_names jest domyślnie ustawiany na 1 w Azure Database for MariaDB.The lower_case_table_names parameter is set to 1 by default in Azure Database for MariaDB.

    SET GLOBAL lower_case_table_names = 1;
    
  3. Utwórz nową rolę replikacji i Skonfiguruj uprawnienia.Create a new replication role and set up permissions.

    Utwórz konto użytkownika na serwerze głównym, który został skonfigurowany z uprawnieniami replikacji.Create a user account on the master server that's configured with replication privileges. Konto można utworzyć przy użyciu poleceń SQL lub MySQL Workbench.You can create an account by using SQL commands or MySQL Workbench. Jeśli planujesz replikację przy użyciu protokołu SSL, musisz go określić podczas tworzenia konta użytkownika.If you plan to replicate with SSL, you must specify this when you create the user account.

    Aby dowiedzieć się, jak dodać konta użytkowników na serwerze głównym, zapoznaj się z dokumentacją MariaDB.To learn how to add user accounts on your master server, see the MariaDB documentation.

    Przy użyciu następujących poleceń Nowa rola replikacji może uzyskać dostęp do serwera głównego z dowolnego komputera, a nie tylko z komputera, który hostuje wzorzec.By using the following commands, the new replication role can access the master from any machine, not just the machine that hosts the master itself. W przypadku tego dostępu określ syncuser@"%" w poleceniu, aby utworzyć użytkownika.For this access, specify syncuser@'%' in the command to create a user.

    Aby dowiedzieć się więcej na temat dokumentacji MariaDB, zobacz Określanie nazw kont.To learn more about MariaDB documentation, see specifying account names.

    Polecenie SQLSQL command

    • Replikacja przy użyciu protokołu SSLReplication with SSL

      Aby wymagać protokołu SSL dla wszystkich połączeń użytkowników, wprowadź następujące polecenie, aby utworzyć użytkownika:To require SSL for all user connections, enter the following command to create a user:

      CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
      GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;
      
    • Replikacja bez protokołu SSLReplication without SSL

      Jeśli protokół SSL nie jest wymagany dla wszystkich połączeń, wprowadź następujące polecenie, aby utworzyć użytkownika:If SSL isn't required for all connections, enter the following command to create a user:

      CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
      GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';
      

    Workbench MySQLMySQL Workbench

    Aby utworzyć rolę replikacji w programie MySQL Workbench, w okienku Zarządzanie wybierz pozycję Użytkownicy i uprawnienia.To create the replication role in MySQL Workbench, in the Management pane, select Users and Privileges. Następnie wybierz pozycję Dodaj konto.Then select Add Account.

    Użytkownicy i uprawnienia

    Wprowadź nazwę użytkownika w polu Nazwa logowania .Enter a username in the Login Name field.

    Użytkownik synchronizacji

    Wybierz panel role administracyjne , a następnie na liście uprawnień globalnychwybierz pozycję replikacja podrzędna.Select the Administrative Roles panel, and then in the list of Global Privileges, select Replication Slave. Wybierz pozycję Zastosuj , aby utworzyć rolę replikacji.Select Apply to create the replication role.

    Replikacja podrzędna

  4. Ustaw serwer główny do trybu tylko do odczytu.Set the master server to read-only mode.

    Przed zazrzutem bazy danych serwer musi być umieszczony w trybie tylko do odczytu.Before you dump a database, the server must be placed in read-only mode. W trybie tylko do odczytu główny serwer nie może przetwarzać żadnych transakcji zapisu.While in read-only mode, the master can't process any write transactions. Aby uniknąć wpływu na działalność biznesową, Zaplanuj okno tylko do odczytu w czasie poza szczytem.To help avoid business impact, schedule the read-only window during an off-peak time.

    FLUSH TABLES WITH READ LOCK;
    SET GLOBAL read_only = ON;
    
  5. Pobierz bieżącą nazwę pliku dziennika binarnego i przesunięcia.Get the current binary log file name and offset.

    Aby określić bieżącą nazwę pliku dziennika binarnego i przesunięcia, uruchom polecenie show master status.To determine the current binary log file name and offset, run the command show master status.

    show master status;
    

    Wyniki powinny wyglądać podobnie do poniższej tabeli:The results should be similar to the following table:

    Wyniki stanu głównego

    Zanotuj nazwę pliku binarnego, ponieważ zostanie ona użyta w dalszych krokach.Note the binary file name, because it'll be used in later steps.

  6. Pobierz pozycję GTID (opcjonalnie wymagana do replikacji z GTID).Get the GTID position (optional, needed for replication with GTID).

    Uruchom funkcję BINLOG_GTID_POS , aby uzyskać położenie GTID dla odpowiadającej nazwy pliku binlog i przesunięcia.Run the function BINLOG_GTID_POS to get the GTID position for the corresponding binlog file name and offset.

    select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
    

Zrzuć i przywróć serwer głównyDump and restore the master server

  1. Zrzuć wszystkie bazy danych z serwera głównego.Dump all the databases from the master server.

    Użyj mysqldump, aby zrzucić wszystkie bazy danych z serwera głównego.Use mysqldump to dump all the databases from the master server. Nie jest konieczne zrzucanie biblioteki MySQL i biblioteki testowej.It isn't necessary to dump the MySQL library and test library.

    Aby uzyskać więcej informacji, zobacz temat Zrzuć i Przywróć.For more information, see Dump and restore.

  2. Ustaw serwer główny na tryb do odczytu i zapisu.Set the master server to read/write mode.

    Po zrzucie bazy danych Zmień serwer główny MariaDB z powrotem na tryb odczytu/zapisu.After the database has been dumped, change the master MariaDB server back to read/write mode.

    SET GLOBAL read_only = OFF;
    UNLOCK TABLES;
    
  3. Przywróć plik zrzutu na nowy serwer.Restore the dump file to the new server.

    Przywróć plik zrzutu do serwera utworzonego w usłudze Azure Database for MariaDB.Restore the dump file to the server created in the Azure Database for MariaDB service. Zapoznaj się z tematem zrzuć & Restore , aby przywrócić plik zrzutu do serwera MariaDB.See Dump & Restore for how to restore a dump file to a MariaDB server.

    Jeśli plik zrzutu jest duży, przekaż go do maszyny wirtualnej na platformie Azure w tym samym regionie, w którym znajduje się serwer repliki.If the dump file is large, upload it to a VM in Azure within the same region as your replica server. Przywróć go na serwerze Azure Database for MariaDB z maszyny wirtualnej.Restore it to the Azure Database for MariaDB server from the VM.

  1. Ustaw serwer główny.Set the master server.

    Wszystkie funkcje replikacja typu data-in są wykonywane przez procedury składowane.All Data-in Replication functions are done by stored procedures. Wszystkie procedury można znaleźć w replikacja typu Data-in procedurach składowanych.You can find all procedures at Data-in Replication Stored Procedures. Procedury składowane można uruchamiać w programie MySQL Shell lub MySQL Workbench.Stored procedures can be run in the MySQL shell or MySQL Workbench.

    Aby połączyć dwa serwery i rozpocząć replikację, zaloguj się do docelowego serwera repliki w usłudze Azure DB dla MariaDB.To link two servers and start replication, sign in to the target replica server in the Azure DB for MariaDB service. Następnie ustaw wystąpienie zewnętrzne jako serwer główny przy użyciu mysql.az_replication_change_master lub mysql.az_replication_change_master_with_gtid procedury składowanej na serwerze usługi Azure DB dla MariaDB.Next, set the external instance as the master server by using the mysql.az_replication_change_master or mysql.az_replication_change_master_with_gtid stored procedure on the Azure DB for MariaDB server.

    CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');
    

    lubor

    CALL mysql.az_replication_change_master_with_gtid('<master_host>', '<master_user>', '<master_password>', 3306, '<master_gtid_pos>', '<master_ssl_ca>');
    
    • master_host: Nazwa hosta serwera głównegomaster_host: hostname of the master server
    • master_user: Nazwa użytkownika serwera głównegomaster_user: username for the master server
    • master_password: hasło dla serwera głównegomaster_password: password for the master server
    • master_log_file: nie uruchomiono binarnej nazwy pliku dziennika show master statusmaster_log_file: binary log file name from running show master status
    • master_log_pos: uruchamianie binarnej lokalizacji dziennika show master statusmaster_log_pos: binary log position from running show master status
    • master_gtid_pos: GTID położenie z uruchamiania select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);master_gtid_pos: GTID position from running select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
    • master_ssl_ca: kontekst certyfikatu urzędu certyfikacji.master_ssl_ca: CA certificate’s context. Jeśli nie używasz protokołu SSL, Przekaż pusty ciąg. *If you're not using SSL, pass in an empty string.*

    * Zalecamy przekazywanie w master_ssl_ca parametr jako zmienna.*We recommend passing in the master_ssl_ca parameter as a variable. Więcej informacji można znaleźć w poniższych przykładach.For more information, see the following examples.

    PrzykładyExamples

    • Replikacja przy użyciu protokołu SSLReplication with SSL

      Utwórz zmienną @cert, uruchamiając następujące polecenia:Create the variable @cert by running the following commands:

      SET @cert = '-----BEGIN CERTIFICATE-----
      PLACE YOUR PUBLIC KEY CERTIFICATE’S CONTEXT HERE
      -----END CERTIFICATE-----'
      

      Replikacja przy użyciu protokołu SSL jest skonfigurowana między serwerem głównym hostowanym w domenie companya.com i serwerem repliki hostowanym w Azure Database for MariaDB.Replication with SSL is set up between a master server hosted in the domain companya.com, and a replica server hosted in Azure Database for MariaDB. Ta procedura składowana jest uruchamiana w replice.This stored procedure is run on the replica.

      CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, @cert);
      
    • Replikacja bez protokołu SSLReplication without SSL

      Replikacja bez protokołu SSL jest skonfigurowana między serwerem głównym hostowanym w domenie companya.com i serwerem repliki hostowanym w Azure Database for MariaDB.Replication without SSL is set up between a master server hosted in the domain companya.com, and a replica server hosted in Azure Database for MariaDB. Ta procedura składowana jest uruchamiana w replice.This stored procedure is run on the replica.

      CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, '');
      
  2. Rozpocznij replikację.Start replication.

    Wywołaj procedurę składowaną mysql.az_replication_start, aby rozpocząć replikację.Call the mysql.az_replication_start stored procedure to start replication.

    CALL mysql.az_replication_start;
    
  3. Sprawdź stan replikacji.Check replication status.

    Wywołaj polecenie show slave status na serwerze repliki, aby wyświetlić stan replikacji.Call the show slave status command on the replica server to view the replication status.

    show slave status;
    

    Jeśli Slave_IO_Running i Slave_SQL_Running znajdują się w yesstanu, a wartość Seconds_Behind_Master to 0, replikacja działa.If Slave_IO_Running and Slave_SQL_Running are in the state yes, and the value of Seconds_Behind_Master is 0, replication is working. Seconds_Behind_Master wskazuje, jak późna jest replika.Seconds_Behind_Master indicates how late the replica is. Jeśli wartość nie jest 0, replika przetwarza aktualizacje.If the value isn't 0, then the replica is processing updates.

  4. Zaktualizuj odpowiednie zmienne serwera, aby zapewnić bezpieczeństwo replikacji danych (wymagane tylko w przypadku replikacji bez GTID).Update the corresponding server variables to make data-in replication safer (required only for replication without GTID).

    Ze względu na ograniczenie replikacji natywnej w MariaDB należy ustawić zmienne sync_master_info i sync_relay_log_info na potrzeby replikacji bez scenariusza GTID.Because of a native replication limitation in MariaDB, you must set sync_master_info and sync_relay_log_info variables on replication without the GTID scenario.

    Sprawdź zmienne sync_master_info i sync_relay_log_info serwera podrzędnego, aby upewnić się, że replikacja danych jest stabilna, i Ustaw zmienne do 1.Check your slave server's sync_master_info and sync_relay_log_info variables to make sure the data-in replication is stable, and set the variables to 1.

Inne procedury składowaneOther stored procedures

Zatrzymywanie replikacjiStop replication

Aby zatrzymać replikację między serwerem głównym a programem repliki, należy użyć następującej procedury składowanej:To stop replication between the master and replica server, use the following stored procedure:

CALL mysql.az_replication_stop;

Usuń relację replikacjiRemove the replication relationship

Aby usunąć relację między serwerem głównym a programem repliki, należy użyć następującej procedury składowanej:To remove the relationship between the master and replica server, use the following stored procedure:

CALL mysql.az_replication_remove_master;

Pomiń błąd replikacjiSkip the replication error

Aby pominąć błąd replikacji i zezwolić na replikację, należy użyć następującej procedury składowanej:To skip a replication error and allow replication, use the following stored procedure:

CALL mysql.az_replication_skip_counter;

Następne krokiNext steps

Dowiedz się więcej na temat replikacja typu data-in Azure Database for MariaDB.Learn more about Data-in Replication for Azure Database for MariaDB.