SQL Replication with Docker Compose

image from How to Configure MS SQL Server Replication (nakivo.com)

สำหรับการ Backup ข้อมูล ของฐานข้อมูลนั้นจะมีหลากหลายวิธี ซึ่งหนึงในนั้นก็คือการทำ Replication ระหว่าง Database ซึ่งถ้าจะให้อธิบายว่า SQL Replication คืออะไรนั้น ก็คือจำการคัดลอกข้อมูล โดยที่จะทำในลักษณะคล้ายกับการ Backup ข้อมูลเอาไว้ หรือการทำ Data Data Availability เพื่อป้องกันข้อมูลเสียหาย หรือสามารถนำเอาไปใช้งานตามที่ต้องการ

For backing up the data from the database, there are various methods. One of them is Database Replication. If we were to explain what SQL Replication is, it is the process of copying data like backing up data or ensuring Data Availability. This helps prevent data loss or enables the data to be used as needed.

เริ่มแรกเราก็จะมาทำการสร้าง docker compose file ของเรากัน โดยคำสั่งในไฟล์ ก็จะมีตามนี้

First, we will create our Docker Compose file. The commands in the file will be as follows:

จากโค๊ด เราจะทำการสร้าง Service ของ SQL Server ขึ้นมา 3 ตัว คือ

From the code, we will create three SQL Server services.

  • Publisher
  • Subscriber
  • Distributor

จากนั้นให้เราใช้คำสั่ง รัน Docker compose ด้วยคำสั่ง

Then, use the command to run Docker Compose the following command:

docker compose up -d

จากนั้นให้ใช้คำสั่ง นี้เพื่อตรวจสอบว่า container ทำงานปกติหรือไม่

Next, use this command to check whether the container is running properly.

docker compose ps

หลังจากนั้นให้ใช้ SSMS ลองเชื่อมต่อกับ Service โดยให้ทำการระบุ port เพื่อเชื่อมต่อ ดังภาพ

After that, use SSMS (SQL Server Management Studio) to try connecting to the service by specifying the port for the connection, as shown in the image.

localhost,1451 (publisher)

localhost,1452 (subscriber)

localhost,1453 (distributor)

คำสั่งสำหรับตรวจสอบ Hostname และ version

The Command for checking the Hostname and version:

SELECT @@servername Server_Name,@@version Version

สำหรับตั้งแต่ขั้นตอนนี้เป็นต้นไป แนะนำให้กดรันคำสั่งที่ละชุดนะครับ อย่ากดรันทั้งหมดเลย เพราะจะทำให้ตัว agent ไม่สามารถ update ข้อมูลบน subscriber ได้ครับ และหากเราเข้าไปดู log ข้างใน จะขึ้น error ตามนี้ครับ

From this point onwards, running the commands one set at a time is recommended. Only run them some at a time, as this will prevent the agent from updating the subscriber's data. If we check the logs inside, we will see the following error.

publisher

Login failed. The login is from an untrusted domain and cannot be used with Integrated authentication.
subscriber

Login failed for user 'sa'. Reason: Failed to open the explicitly specified database 'Demo'.

ขั้นแรก จะทำการ config ตัว distributor กันก่อน ด้วยคำสั่ง

First, we will configure the distributor using the following command:

หลังจากนั้น เราก็จะไป config ในส่วนของ publisher กันต่อ โดยใช้คำสั่ง

After that, we will proceed to configure the publisher using the following command:

หลังจากนั้นให้เราไปสร้าง Database Demo และ Table ใน subscriber ต่อ ด้วยคำสั่ง

Next, create the Demo database and table in the subscriber using the following command:

ต่อจากนั้น เราก็จะมาตรวจสอบข้อมูลใน Table Employee กันก่อน ซึ่งก็จะมีข้อมูล ดังภาพ

Next, we will check the data in the Employee table, which should contain the following information as shown in the image.

และเมื่อเราทำการเพิ่มข้อมูลเข้าไปอีก ตัวข้อมูลก็จะถูก Copy ไปยัง Subscriber ด้วยเช่นกัน

And when we add more data, it will also be copied to the subscriber.

Reference:

--

--