Mysql实现主从复制
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 添加2台mysql的本地解析
3.2CA证书的签发,
3.2.1将mysql当做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 默认是1,mysql1中使用默认
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; 禁止普通用户对数据的写