Mysql实现主从复制

mysql主从复制+openssl_第1张图片

1.方便随着数据的增长而超出我们的预期,是mysql实现自动扩展,将mysql做在LVM

1.1LVM的创建

创建两个新分区,大小各为5G,我的分别为/dev/sda5/dev/sda6

#pvcreate /dev/sda{5,6}

#vgcreate mysql /dev/sda{5,6}

#lvcreate -L 5G -n my1 mysql

#mke2fs -j /dev/mysql/my1

#mkdir /data/mysql

#mount /dev/mysql/my1 /data/mysql

#vim /etc/fstab

/dev/mysql/my1  /data/mysql

2.mysql的安装

#groupadd mysql

#useradd -g mysql -s /sbin/nologin -M -d /data/mysql mysql

#chown -R mysql:mysql /data/mysql

#tar xf mysql-5.5.24-linux2.6-i686.tar.gz -C /usr/local

#cd /usr/local

#ln -s mysql-5.5.24-linux2.6-i686 mysql

#cd mysql

#chown -R mysql:mysql .

# scripts/mysql_install_db --user=mysql --datadir=/data/mysql

#chown -R root .

# cp support-files/my-large.cnf  /etc/my.cnf 

#vim /etc/my.cnf

[mysqld]

 thread_concurrency = 2

 datadir=/data/mysql

#cp support-files/mysql.server /etc/rc.d/init.d/mysqld

#ln -sv /usr/local/mysql/include  /usr/include/mysql

#echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

#vim /etc/profile

PATH=/usr/local/mysql/bin:$PATH

#export PATH=$PATH:/usr/local/mysql/bin

#chkconfig --add mysqld

#chkconfig mysqld on

#service mysqld start

在两台mysql服务器上做同样的配置

3.复制前的准备

3.1主机名的更改

Mysql的主从复制是通过解析主机名和通过使用二进制文件中的内容进行复制的,所以两台mysql主机名要区别好记,时间要保持一致

主机名涉及到得配置:

#hostname HOSTNAME

#sed -i 's/HOST*/HOSTNAME=主机名/' /etc/sysconfig/network

#vim /etc/hosts    添加2mysql的本地解析

3.2CA证书的签发,

3.2.1mysql当做CA授权机构

#vim /etc/pki/tls/openssl.conf

dir=/etc/pki/CA

#cd /etc/pki/CA

#mkdir certs newcerts crl

#touch index .txt

#echo 01 >serialw

#umask 077;openssl genrsa -out private/cakey.pem 2048

#openssl req -x509 -new -key private/cakey.pem -out cacert.pem

3.2.2mysql1自签证书

#mkdir /etc/ssl

#cd ssl

#umask 077;openssl genrsa 1024>mysqld.key

#openssl req -new -key mysqld.key -out mysqld.csr

证书颁发请求的信息中国家和域名要和CA 的保持一致,服务名和主机名保持一致
#openss; ca -in mysqld.csr -out mysqld.crt -days 365

#chown -R  root:mysql /etc/ssl

3.2.3mysql2的证书的生成

Mysql2上的操作:

#mkdir /etc/ssl

#cd ssl

#umask 077;openssl genrsa 1024>mysqld.key

#openssl req -new -key mysqld.key -out mysqld.csr

#scp mysqld.csr node1.7ing.com:/root 

证书颁发请求的信息中国家和域名要和CA 的保持一致

Mysql签发证书
#openss; ca -in mysqld.csr -out mysqld.crt -days 365

#scp mysqld.crt /etc/pki/CA/cacert.pem node2.7ing.com:/etc/sslw

Mysql2上的操作

#chown -R root:mysql /etc/ssl

4.复制的设置

4.1mysql1的配置

#vim /etc/my.cnf

[mysqld]

ssl

Ssl_capath=/etc/pki/CA/cacert.pem

Ssl_cert=/etc/ssl/mysqld.crt

Ssl_key=/etc/ssl/mysqld.key

#service mysqld restart

#mysql

mysql > grant replication slave,replication client on *.* to [email protected] identified by 'redhat' require ssl; 创建repluser用户,授权其复制的权利

 mysql >flush privileges

 mysql >show master status;

 mysql-bin.000003 |      365 |  

查看使用到的二进制文件和位置,从复制的时候要使用到,格式化对数据库操作的步骤不用复制

4.2mysql2的复制

#vim /etc/my.cnf

Server_id=2             默认是1mysql1中使用默认

Relay-log=mysql-relay    开启中继日志

#log-bin=mysql-bin       关闭二进制日志

#service mysqld restart

mysql >CHANGE MASTER TO

MASTER_HOST= 'node1.7ing.com',       主mysql主机名

        MASTER_USER='repluser',              mysql复制的用户名

MASTER_PASSWORD='redhat',          mysql复制的用户密码

MASTER_LOG_FILE='mysql-bin.000003',  用于复制的二进制文件

MASTER_LOG_POS= 365,                指定二进制文件的复制开始位置 

MASTER_PORT= 3306,                   指定端口,默认3306,没有可以不用指定

        MASTER_SSL = 1,                       开启ssl

        MASTER_SSL_CA = '/etc/ssl/cacert.pem',     指定ca证书的位置

        MASTER_SSL_CERT = '/etc/ssl/mysqld.crt',   指定mysql服务的证书

        MASTER_SSL_KEY = '/etc/ssl/mysqld.key';   指定mysql服务的密钥

mysql >start slave;             启动复制功能

msyql >show global variables like 'read_only'; 最好写在配置文件中

mysql > SET global read_only=1; 禁止普通用户对数据的写