Configurez replicarea cu mai multe surse cu serverele Mariadb 10.6. Am 2 servere mariadb cu baze de date care au același nume „bază de date”. Vreau ca acele două servere să-și reproducă DB pe un singur server slave, astfel încât baza de date master1 este replicată în database1 și baza de date master2 este replicată în database2.
Iată configurațiile master:
# Replicare
coșul de jurnal
server_id=1 # 2 pentru master2
log-basename=master1 # master2 pentru master2
binlog-format=mixt
gtid_domain_id=1 # 2 pentru master2
Iată configurația slave:
#Replicare
coșul de jurnal
server_id=3
master1.replicate_rewrite_db="bază de date->bază de date1"
master2.replicate_rewrite_db="bază de date->bază de date2"
Fac backup pentru master1 făcând un mysqldump:
sudo mysqldump --master-data=2 -u root -p database > master1_test.sql
și importați-l pe slave.
Folosesc aceste comenzi pe cli mariadb pentru a începe replicarea:
opri slave 'master1';
resetează slave 'master1';
SCHIMBĂ MASTER „master1” ÎN MASTER_HOST='XXXX', MASTER_USER='replicare', MASTER_PASSWORD='XXXXXXX', MASTER_PORT=3306, MASTER_LOG_FILE='master1-bin.000001', MASTER_LOG_POS=710, MASTER_USE_CONNECT_po;
SETARE GLOBAL gtid_slave_pos = "1-1-2"
porniți slave 'master1';
MASTER_LOG_FILE, MASTER_LOG_POS și gtid_slave_pos sunt preluate din fișierul de descărcare.
totul merge bine. Am încercat să adaug un nou tabel în master1, crearea noului tabel este replicată.
Cu toate acestea, când am încercat să pun câteva date în noul tabel, următoarele comenzi îmi spun:
arată starea sclavului „master1” \G;
Last_SQL_Error: Eroare „Tabelul „database.test” nu există” la interogare. Baza de date implicită: „database1”. Interogare: „INSERT INTO `database`.`test` (`test`) VALUES ('1242')'
Ar trebui să înlocuiască baza de date cu baza de date1.