Eu nunca tentei a replicação master-master, mas configurei conexões SSL com o checksum pt-table-checksum. Espero que minhas anotações abaixo possam ajudar a responder algumas de suas perguntas relacionadas ao SSL.
No meu caso, tenho replicação mestre-escravo configurada usando conexões SSL e estou usando o Percona Toolkit 2.1.2. Como a maneira de configurá-lo não era óbvia, achei que minhas anotações poderiam ajudá-lo a economizar tempo e esforço em sua situação. Abaixo está um exemplo de como eu obtive as conexões SSL trabalhando para as conexões pt-table-checksum para os servidores de banco de dados master e slave.
A chave é passar a informação de DSN (contendo as configurações de SSL) para o escravo explicitamente passando o arquivo de padrões (por exemplo, -F = / etc / my.cnf.percona) para o escravo usando o "- recursion-method dsn "configuração. Pelo que li no site da Percona e revisando o código de soma de tabela pt-pt, as informações de DSN não são copiadas de uma conexão para a próxima em versões posteriores do Percona Toolkit (começando com 2.0, acredito). Então, você tem que configurar a conexão escrava separadamente do mestre.
Passar informações DSN para a conexão escrava usando:
- método de recuperação dsn="D = percona, t = dsns, F = / etc / my.cnf.percona"
Suposições:
uma. A conta de banco de dados "percona" tem privilégios adequados para a soma de verificação da tabela pt de Percona. Recomendo o uso de "REQUIRE SSL" para garantir que a conta seja necessária para usar conexões SSL.
b. O escravo e o mestre estão configurados para usar conexões SSL
Observação: todas as etapas abaixo são feitas no mestre.
(1) Para passar as configurações SSL para a conexão DBI (ou seja, a configuração DSN), crie um arquivo my.cnf separado especificamente para o software percona.
/etc/my.cnf.percona [client] ssl=1 user=percona password=xxxxxxxxx ssl-capath=/etc/mysql/ca/crt The /etc/my.cnf.percona file will be used to set up the SSL connections to both the master and slave. Make sure to set the ownership & permissions on the file since it contains a password: chown root:root /etc/my.cnf.percona (if it's not already owned by root or a system account) chmod 0600 /etc/my.cnf.percona
(2) Teste as configurações de /etc/my.cnf.percona
# mysql --defaults-file=/etc/my.cnf.percona --host slave.domain.com mysql> \s -------------- mysql Ver 14.14 Distrib 5.5.23, for Linux (x86_64) using readline 5.1 Connection id: 162 Current database: Current user: [email protected] SSL: Cipher in use is DHE-RSA-AES256-SHA Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.5.23-log MySQL Community Server (GPL) Protocol version: 10 Connection: slave.domain.com via TCP/IP Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 TCP port: 3306 Uptime: 2 days 2 hours 8 min 7 sec # mysql --defaults-file=/etc/my.cnf.percona --host master.domain.com mysql> \s -------------- mysql Ver 14.14 Distrib 5.5.23, for Linux (x86_64) using readline 5.1 Connection id: 581433 Current database: Current user: [email protected] SSL: Cipher in use is DHE-RSA-AES256-SHA Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.5.23-log MySQL Community Server (GPL) Protocol version: 10 Connection: master.domain.com via TCP/IP Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 TCP port: 3306 Uptime: 9 days 3 hours 5 min 49 sec
(3) Configure a tabela DSN no banco de dados percona no master master
On the master: Create the percona database (if it does not already exist): mysql> create database percona; If the percona database already exists and you want to redo everything from scratch, drop the checksums & dsns tables if they already exist: mysql> drop table percona.checksums; -- do this only if you are sure you want to start over & redo everything
mysql> drop table percona.dsns; -- ok to drop this, we're recreating it in the next step
Create the dsns table in the percona database:
mysql> use percona; mysql> CREATE TABLE 'dsns' ( -> 'id' int(11) NOT NULL AUTO_INCREMENT, -> 'parent_id' int(11) DEFAULT NULL, -> 'dsn' varchar(255) NOT NULL, -> PRIMARY KEY ('id') -> ); Insert the slave info into the table: mysql> insert into dsns (dsn) values ("h=slave.domain.com");
(4) Execute a soma de verificação pt-table e passe explicitamente o arquivo-padrão (-F = / etc / my.cnf.percona) para o escravo usando a configuração "--recursion-method dsn"
/usr/bin/pt-table-checksum -F /etc/my.cnf.percona h=master.domain.com --recursion-method dsn="D=percona,t=dsns,F=/etc/my.cnf.percona" master connection uses "-F /etc/my.cnf.percona h=master.domain.com" slave connection uses '--recursion-method dsn="D=percona,t=dsns,F=/etc/my.cnf.percona"'
Isso deve criar a tabela de checksums no banco de dados percona e conectar-se ao escravo (e mestre) usando conexões SSL.