Cập nhật nguồn phần mềm
sudo apt-get update
Cài đặt MySQL Server
sudo apt-get install mysql-server
Lệnh trên sẽ cài đặt các gói sau: apparmor, mysql-client-5.7, mysql-common, mysql-server, mysql-server-5.7, mysql-server-core-5.7. Quá trình cài đặt sẽ yêu cầu bạn đặt mật khẩu cho người dùng root của MySQL. Sau khi hoàn tất, MySQL sẽ tự động khởi động.
Quản lý dịch vụ MySQL
# Khởi động
service mysql start
# Dừng
service mysql stop
# Khởi động lại
service mysql restart
Kiểm tra trạng thái MySQL
Để xác nhận MySQL đã khởi động thành công, kiểm tra xem có trạng thái LISTEN:
sudo netstat -tap | grep mysql
Truy cập shell MySQL
mysql -u root -p
Nhập mật khẩu root đã thiết lập.
Cấu hình truy cập từ xa
vi /etc/mysql/mysql.conf.d/mysqld.cnf
Lưu và thoát, sau đó vào MySQL và thực thi lệnh cấp quyền:
grant all on *.* to root@'%' identified by 'mat_khau_cua_ban' with grant option;
flush privileges;
Thoát MySQL và khởi động lại dịch vụ:
service mysql restart
Thiết lập tự động khởi động
systemctl enable mysql
Cấu hình Master-Slave Replication
Trên cả hai máy, cấu hình quyền truy cập cho /etc/my.cnf:
cat /etc/apparmor.d/usr.sbin.mysqld
Chỉnh sửa file cấu hình:
vi /etc/apparmor.d/usr.sbin.mysqld
Khởi động lại hệ thống:
reboot
Cấu hình Master (192.168.88.51)
vi /etc/my.cnf
Thêm vào:
[mysqld]
log_bin=mysql-bin
server_id=1
Lưu và khởi động lại MySQL:
service mysql restart
Cấu hình Slave (192.168.88.52)
vi /etc/my.cnf
Thêm vào:
[mysqld]
log_bin=mysql-bin
server_id=2
Lưu và khởi động lại MySQL:
service mysql restart
Cấu hình replication trong MySQL
Trên Master:
mysql -u root -p
-- Tạo tài khoản复制
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'192.168.88.52' IDENTIFIED BY 'mat_khau_replica';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
Ghi lại giá trị trong cột File và Position.
Trên Slave:
mysql -u root -p
-- Cấu hình Master
CHANGE MASTER TO MASTER_HOST='192.168.88.51', MASTER_USER='replica_user', MASTER_PASSWORD='mat_khau_replica', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
-- Bắt đầu replication
START SLAVE;
SHOW SLAVE STATUS\G;
Cấu hình không phân biệt chữ hoa chữ thường
vi /etc/mysql/mysql.conf.d/mysqld.cnf
Thêm vào phần [mysqld]:
lower_case_table_names=1
Lưu và khởi động lại dịch vụ:
service mysql restart
Phục hồi replication khi gặp sự cố
Dừng Slave:
mysql -u root -p
STOP SLAVE;
Trên Master, kiểm tra trạng thái:
SHOW MASTER STATUS;
Ghi lại File và Position.
Trên Slave, thực thi lệnh:
CHANGE MASTER TO MASTER_HOST='IP_Master', MASTER_USER='tai_khoan', MASTER_PASSWORD='mat_khau', MASTER_LOG_FILE='file_ghi', MASTER_LOG_POS=position;
START SLAVE;
Kiểm tra lại trạng thái.
Bật binlog
Trên Ubuntu, cần cấu hình AppArmor:
sudo vim /etc/apparmor.d/usr.sbin.mysqld
Thêm đường dẫn thư mục:
/data/mysql/ r,
/data/mysql/** rwk,
Khởi động lại AppArmor:
sudo service apparmor restart
Thay đổi quyền truy cập:
mkdir -p /data/mysql/
chown -R mysql:mysql /data/mysql/
chmod -R 777 /data/mysql/
Cấu hình binlog trong my.cnf
vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id=1
binlog_format=MIXED
log_bin=/data/mysql/mysql-bin
expire_logs_days=7
max_binlog_size=100m
binlog_cache_size=4m
max_binlog_cache_size=512m
Khởi động lại MySQL và kiểm tra:
sudo /etc/init.d/mysql restart
SHOW VARIABLES LIKE 'log\_%';