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.